Objective-C基础
1.C语言面向过程,OC面向对象
2.第一个OC程序
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
NSLog(@"Hello, World!");
}
return 0;
}
1)import引入头文件可以防止重复包含
2)Foundation/Foundation.h文件包含了很多头文件,引入这个等于把OC的库文件都引过来了
3)@autoreleasepool
4)NSLog与printf比较
NSLog自动换行,printf不会
NSLog会输出时间等项目信息,printf不会输出调试信息
NSLog函数的参数是一个NSString对象,printf是一个字符串常量指针
NSLog打印字符串用%@,NSString *Str1=@"ancc";NSLog(@"%@",str1);printf用%s
3.@""代表字符串
4.文档注释
/**
*
**/
5.增强型for循环
6.类的定义
//
// main.m
// OC1
//
// Created by fanyafang on 15/10/30.
// Copyright © 2015年 itcast. All rights reserved.
//
#import <Foundation/Foundation.h>
#pragma mark Person类
@interface Person : NSObject
{
@public
int _age;
NSString *_name;
}
-(void)getAge;
@end
@implementation Person
-(void)getAge{
NSLog(@"dddd");
}
@end
#pragma mark
int main(int argc, const char * argv[]) {
@autoreleasepool {
Person *p=[Person new];
p->_age=10;
NSLog(@"%d",p->_age);
[p getAge];
}
return 0;
}
7.内存的理解
代码区:存放类定义,加载一次
堆区:存放实例变量,保存了代码区类的地址
栈区:存放对象
8.NSString的用法:
1)创建字符串的方法
NSString *asstring=@"This is a String!";
NSString *s=[NSString new];
NSString *imgName=[NSString stringWithFormat:@"xxxxxxxx%02d.jpg",i];//格式化创建字符串
NSString *s2=[[NSString alloc] initwithString:s1];//用一个已经存在的字符串创建一个新的字符串
2)输出一个字符串
NSLog(@"%@",asstring);
3)字符串长度计算方法
C语言中用strlen函数
OC中用NSUInterger len=[s1 length];//NSUInterger无符号长整型
1个汉字按1个长度计算
9.OC的多文件开发
头文件和类实现文件分开编写,用import包含
10.类方法的学习
11.匿名类
使用匿名类调用类方法:[[Car new] stop];
[Car new]等价于[[Car alloc]init]
匿名类的优点:可以简化代码,方便方法的调用;缺点:匿名对象实例化后只能正确的使用成员变量一次。
12.get-set方法的编写
13.对象之间的关系:
组合(葡萄) 依赖(一个对象的方法参数是另一个对象) 关联(拥有,一个类的成员是另一个类的对象)
13.OC中没有重载,类的方法不能同名
14.static的用法
1)在方法中延长变量的生命周期
2).h中定义的实例变量不能定义为static
3)不能用static修饰方法
4)在实现类中定义全局static变量,只在当前文件中有效
5)在接口类中定义全局static变量,只在当前文件中有效
15.self的使用
1)对象方法中,调用另一个对象方法
2)在类方法中,调用另一个类方法
3)修饰变量-在set方法中,形参与实例变量名称相等,用self取实例变量