-
常量
- const 类型 变量
- #define 变量 基础类型(数字或字符串)
- BOOL 在OC中布尔值是用数字来表示的
- YES==1 NO==0
-
函数
- (返回值类型)函数名:(参数类型)参数名称 :(参数类型)参数名称{
}- (NSInteger) loop:(NSInteger)num :(NSString*)str{ }
- 参数为...代表可以传任意数量的参数任意类型
例:
NSString* str = [NSString stringWithFormat:@"%iand%@",20,@"good"];注:
- 如果在.m文件中定义则只能在当前类(.m文件)中调用该函数,即不能在其他引用了该类的.h文件中调用该类的方法
- 如果在.h文件中声明了函数,就可以在其他类中引用该.h文件并调用该方法.
-
类成员
//头文件(.h) @interface view : UIView{ // 类变量 只能在此类中使用 NSString* name ; } // 属性 get set方法的语法糖 @property (nonatomic) NSString* str ; // 函数 - (NSInteger) loop:(NSInteger)num :(NSString*)str; @end
-
类扩展
//类文件(.m) //相当于在类文件中扩展头文件 在类中定义接口声明方法和属性 并且实现(不能在外部调用) @interface view(){ // 类扩展中的类变量 不能与头文件的类变量重名 NSString* ectName; } // 类扩展中声明函数 需要在下面的类中实现 - (void)sayHello; @end
-
类别
- 需要新建一个categroy类型的objective-c文件(会自动生成一个类名+xxx.m和.h文件)
- 然后在需要给该类扩展对象的时候引入改类扩展的头文件即可调用扩展中定义的方法
注: 类扩展文件中不能使用类变量
-
块(匿名函数)
//**当变量使用**($代表需要填写的) //注意匿名函数是不需要写返回值的 声明时需要些 $returnType (^$methodName)($parmType,$paramType,...) = ^($parmType paramName,$paramType paramName,...){//code...} //调用 methodName(); //**在函数中当参数使用**($代表需要填写的) - (void)testFn:($returnType (^)($paramType,$paramType,...))fn; //也可以提取出来 在类顶部预声明 //此处预定义了methodName类型 typedef $returnType (^methodName)($param,...); //修改上面函数参数类型 - (void)testFn:(methodName)fn;
-
struct结构体
//定义 struct $structName{ $typeName $variableName; }; //声明 struct $structName $variableName; //调用 $structName.$variableName; //例子 struct Books { char* bookName; }; struct Books book; book.bookName = "hello"; NSLog(@"%s",book.bookName); //也可以直接在定义结构体时创建变量 struct Books { char* bookName; }$variable; //下面可以直接调用variable //`注ARC中(ios程序中)结构体力只能定义基础类型 不能使用objective-c类型`
-
常用宏指令
#define $variable 基础类型值
//例 如果定义了该宏 就删除该宏 没定义就定义宏
#ifdef $variable
#undef $variable xx
#else
#define $variable
#endif
//注#ifndef是如果宏不存在 用法与#ifdef一样
//宏拓展
//可以在宏里定义代码 运行时会相当于直接把宏定义的代码复制到代码里处理
#define getName(a,b)(@#a #b);
NSString* names = getName(hello, dear);
NSLog(@"%@",names);//hello dear
-
typeof(自定义类型)
//简化一个自定义类型 typeof $typeName $customTypeName; $customTypeName $variable = xxx; //例子: typeof NSString* MY_STR; MY_STR str = @"hey"; //还可以作为其他自定义类型的类型 typeof MY_STR SECOND_STR; SECOND_STR secondStr = @"sencond"; //*注: typeof经常用于定义枚举 typeof NS_ENMU(NSInteger,$enmuName){ //枚举值前缀需要为上面定义的枚举类型名称 $enmuNameLeft = 0, //注意 如果不赋值则为上面的值加一; $enmuNameRight }
-
NSObject
//简写
//注:键为NSString 值为id类型
NSObject* obj = @{@"objName":@[@2,@3]};
NSLog(@"%@",[obj valueForKey:@"objName"]);
-
类
//头文件
@interface $interfaceName :$superName
//类变量
{}
@end
//类文件
@implemention $interfaceName
@end
- 属性指示符
- 常用的有:
* 基础类型用assign
* ns对象用retain
- 修饰符常用nonatomic(非原子性的 线程不安全提高性能)
- 例如:
@property (nonatomic,retain) NSString* str ;
-
继承
- 子类可以重复实现基类头文件中声明的方法 来实现重写
-
协议
- 协议相当于java的接口
//创建协议文件 (也用.h文件)
@protocol
@required
//此处定义必须实现
@optional
//此处定义可选实现
@end
// 实现接口
@interface $name :$entendName<$protocolName>
@end
-
NS对象常用方法
- array
NSMutableArray* arr = [NSMutableArray arrayWithArray:@[@1,@2,@3]]; //替换角标上的对象 [arr replaceObjectAtIndex:$num,withObject:$obj]; //更换角标 [arr exchangeObjectAtIndex:$num,withObjectAtIndex:$num];
- Dictionary
//可变参数最后需要以nil结尾 键或值不能为nil 所以必须成对出现在字典中 NSDictionary* dictionary = [NSDictionary dictionaryWithObjectsAndKey:$value,$key,...,nil]; //根据键获取值 [dictionary valueForKey:$key]; dictionary[$key]; //重新给键赋值 [dictionary setValue:$value forKey:$key]; //`注`:字典类似于java的map是一个key value的结构;
- NSMutableSet
//例子1: NSMutableSet* set = [NSMutableSet setWithObjects:@{@1:@2,@2:@3},@{@"a":@"b"},nil]; //例子2: NSMutableSet* set = [NSMutableSet setWithArray:@[@1,@2,@2]]; //set是一个没有重复值的数组 重复值将存不进去
- NSDate
NSDate* date = [NSDate date]; NSDateFormatter* formatter = [[NSDateFormatter alloc]init]; [formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"]; NSString* stringDate = [formatter stringFromDate:date];
- NSRange
//声明 NSRange range = NSMakeRange(2, 3); range = {2,3}; //使用 NSLog(@"%@",[$string substringWithRange:range]); `注`: typedef struct _NSRange { NSUInteger location; NSUInteger length; } NSRange; //range是一个结构体