美文网首页
Objective-c的笔记

Objective-c的笔记

作者: _Dam0n | 来源:发表于2018-01-16 00:53 被阅读26次

最近都没有空更新了,不仅仅是因为学校的毕业设计和综合课程的东西,还有处理挺多的人际关系什么的东西。

不过,感觉,可能也没有什么人会看我的简书吧,不过还是要写点东西什么的。

今天先写点objective-c的一些笔记什么的,是最近准备找实习了,重新看书复习基础总结的一些东西

现在先写一小部分,持续更新····


首先在c不同的是,oc在输出语句有不一样:

NSLog相当于printf()

NSLog(@”hello Objective-C”);

//注意:

@是Objective-C在标准C语言基础上添加的特征之一,双引导的字符串前面有一个@,这表示引用的字符串应该作为Cocoa的NSString元素处理

NSLog(”are %dand %d different?%@”,5,5,boolString(are They Different));

注意%@:使用NSLog输出任何对象时,都会适用这个格式说明;


BOOL使用8位存储,YES定义为1,NO定义为0,大于1不为YES,跟标准C不同

不小心将一个长度于1字节的整型赋值给BOOL,则只截取八位;

Objective-C中1不等于1,绝对不要将BOOL值和YES比较;


跟各位同学说下,objective-c最大的特点,是面向对象的

使用间接从本地读取文件的例子

#import

int main(int argc,const char *argv[]){

if(argc ==1){

NSLog( “you need to provide a file name”);

return(1);

}

FILE *wordFile = fopen(argv[1],”r”);

char word[100];

whiel(fgets(word,100,wordFile)){

//fget调用会保留分开每一行的换行符,我们不需要,把它置换为0,表示字符串的结束

word[strlen(word)-1]=’\0’;

NSLog(@”%s is %dcharacters long”,word,strlen(word));

}

}

//运行./Word-Length-4/tmp/words.txt

若给了文件路径,那么argc会大于1,然后我们可以查询argv数组得到文件路径。Arg[1]保存着用户提供的文件名,argv[0]保存着程序名。

在XCode中编译此程序需要在XCode文件列表中展开Executables,双击程序名,在Arguments区域中添加启动参数;

这里可能有些同学会看不懂,没关系,接下来继续看,会陆续解释···


id

id是一种泛型,用于表示任何类的对象,id实际上是一个指针,指向其中的某个结构


[]

例:[super dealloc];

第一项是对象名,其余部分是要执行的操作;


Objective-C的OOP范例

@interface部分(一般作为.h单独书写,声明部分,当然,在内存管理的部分,在.h文件中会中#import,在.m文件中,会中@class,这样是为了避免重复引用倒入copy,这里迟点会作为解释)

@interface

Circle:NSObject//说明这是为Circle的新类定义的接口

{

ShapeColorfillColor;

ShapeRectbounds;

} //括号内的是Circle对象需要的各种数据成员

-(void)

setFilColor(ShapeColor)fillColor;//先行短线表明“这是新方法的声明”如果是“+”则表示是类方法也称工厂方法

-(void)setBounds(ShapeRect)bounds;

-(void)draw;

@end//circle

@implementation部分(一般为.m文件,实现部分)

@implementation Circle //@implementation是一个编译器指令,表明你将为某个类提供代码

-(void)setFillColor(ShapeColor)c //在这里如果继续使用参数名fillColor,就会隐藏fillColor实例变量,并且有警告

//我们已经定义了一个名为fillColor的实例变量,可以在该方法中引用该变量,如果使用相同的另一个变量,那么前一个会屏蔽

{

fillColor=c;

}

-(void)setBounds(ShapeRect)b

{

bounds=b;

}

-(void)draw

{

NSLog(“^.^”)

}

@end //Circle

可以在@implementation中定义那些在@interface中无相应声明的方法,可以把他们看做是私有方法,仅在类的实现中适用。

注:Objective-C不存在真正的私有方法,从而禁止其他代码调用。这是Objective-C动态本质的副作用。

一个很好记的就是@interface,是头.h的,脸的,脸就是写方法和属性声明的,那么@implementation,就是身体,是器官,给你写方法的,实习这些或那些方法的地方,这两个部分在oc里会有很多玩法,这种的那种的玩法,在后面会陆续说到,类似封装,继承,多态等····还有手动内存管理和自动内存管里,自动释放池等等,都是在在这里搞的····


中缀符(infix natation)

方法的名称和及其参数都是合在一起的

例如:

只有一个参数的:

[citcle setFillColor:kRedColor];

会有两个参数的:

[circlesetStringValue:@“hello there”color:KBlueColor];

有些同学可能会以为为什么方法名这么奇怪的,一个大写一个小写,这叫驼峰命名规范,在iOS的开发中,甚至很多企业开发中都是用这样的命名规范,但是我还是一个准程序员,外面是不是这样写,我不知道,但是,我师姐就是这样告诉我的,所以我就这样信了;

小弟文笔一般,希望大神们看见多加指点,笔记未完待续····

相关文章

网友评论

      本文标题:Objective-c的笔记

      本文链接:https://www.haomeiwen.com/subject/cuujoxtx.html