Swift4 Day94:Swift开发人员的Objective-C
2018.12.26适用于Swift开发人员的Objective-C
- 建立String的方法
NSString * productTitle = @“弹跳球”; NSString *制造商= @“ Acme Novelty”;
- int float double建立方法
int数量= 144;浮动价格= 19.9;双单位价格=数量/价格;
- 数组的建立方法
- 想要把double放到Array必须先将它转成NSObject
- NSArray与NSDictionary是不能修改的,如果要修改要使用NSMutableDictionary
- [bostionDict setValue:@“巴西”为键:@“国家”]];
是将国家的值从美国改成巴西 - [bostionDict addEntriesFromDictionary:@ {@“人口”:@(656000)}];
加新的物件到bostionDict中
- switch跟for的写法跟swift没什么区别但一定要加()
- 新建NSObjcet档案命名为Animal后,会有h档跟m档。
- .h为标头档,做为宣告属性和方法使用, .m为Objective-C档,做为实际编写属性值和方法内容使用。
- 先定义Animal.h的属性
枚举组{哺乳动物= 0,鸟,爬行动物,两栖动物,BonyFish,CarFish}; @ interface Animal:NSObject @ property(nonatomic,strong)NSString * name; @property(nonatomic)枚举组group; @property(nonatomic)BOOL isExtinct ; @属性(非原子)IBOutlet UIImageView * thumbnaiView; @end
- 建立一个为动物型别的物件称为liger
- 只写动物* liger; 会报错,要记得分配
在Animal.m中加上功能
让我们来拆解一下:void代表没有回传值,eat是函数名,NSStringg是型别,food是参数
-(void)eat:(NSString *)food {NSLog(@“ yum yum,请问我有几秒钟美味的%@”,food);}
在Animal.h中加上介面
-(void)进餐:(NSString *)食物;
用[liger eat:@“ ceral”]; 在viewDidLoad呼叫功能
再加一个功能到Animal.m
Canine.m中加上initWithName函数然后Canine.h加接口
如果没有加interface错误讯息如下:
‘Canine’的可见@interface没有声明选择器’initWithName:’
-(id)是指回传的东西,因为一开始不会检查型别,所以要小心使用
写一个bark的功能MSLog woof woof
犬
-(void)bark {NSLog(@“ woof woof”); }
犬
-(无效)树皮;
再建立一个继承Canine的Chihuahua类别,会拥有Canine的所有能力像initWithName,也可以重复写bark的内容。
奇瓦瓦州
-(void)bark {NSLog(@“ Yip Yip”); }
奇瓦瓦州
-(无效)树皮;
converseWithDog的功能,犬是参数的型别,doggie则是参数的名字。
我觉得很像Swift中扩展名的用法,先选择Objective-C文件在选择类别,类选择NSString
在NSString + Translator.m中,编写转换函数,再去NSString + Translator.h中设置接口
-(NSString *)kennethize:(NSString *)短语{NSMutableString * translatedPhrase = [NSMutableString stringWithString:phrase]; [translatedPhrase replaceOccurrencesOfString:@“。 withString:@“ :)”选项:0范围:NSMakeRange(0,[translatedPhrase length])];返回(NSString *)translatedPhrase;}
github中还有练习uppercaseString的范例
像上面一样选择Objective-C文件在选择协议中,加上run track两个介面,ferretOut则为可选的介面。
这跟Swift蛮像的,但要注意是Swift要用optional时要加@objc
如何在Swift协议中定义可选方法?
感谢您为Stack Overflow提供答案! 您过去的一些答案尚未得到很好的接受,您正在…
stackoverflow.com
@协议狩猎-(void)run ;-( void)track; @ optional-(void)ferretOut; @end
在Canine.h中
确认协议1.#import“ Hunt.h” 2.Animal
在Canine.m档案中就会叫你实做协议
也可以去Chihuahua.m中实作optional的协议ferretOut
字符串和数值变量
wl02722691 /练习字符串和数字变量
集合类型数组和字典
wl02722691 /练习收集类型数组和字典
面向对象和类/类继续分配初始化内存以及更多/功能和方法/创建子类/协议
wl02722691 /练习对象定向和类
分类目录
wl02722691 /练习类别
- Swift开发人员的Treehouse Objective-C
- Objective-C基础
- 面向对象的Objective-C
- NS历史
- Ivars和属性
- 内存和指针简介
- 实践中的指针
- 如何在Objective-C中声明一个块?
- 使用块