基础语法

  • 常量

  • 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是一个结构体
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343