首页 > 其他分享 >[第一篇]object c 和xcode开发工具撸代码初探吐槽

[第一篇]object c 和xcode开发工具撸代码初探吐槽

时间:2022-11-24 11:35:25浏览次数:57  
标签:Student no int xcode object 吐槽 student age


开发工具吐槽

  1. 开发工具似乎没有主动补全的快捷键. 比如输入​​NSL​​手动把提示关闭了,没法再让它弹出勒 (发现时按esc得,不知道能不能改...)
  2. 开发工具似乎自动提示选中一个提示智能用触摸板操作,没法用enter,或者空格选中,而 tab在一个的时候可以选中,但是多个的时候无效.

语法吐槽和语法概述

object c是我见过的最蛋疼的语法,但是就难度而言,可能也没法跟某些vb语法相比,我曾经写的vb程序才是最头疼的..
不过面相对象的操作比较怪异.

  1. 和c语言一样,object c也分两套文件,​​.h​​​ 和​​.m​
  2. ​-​​​代表的是非静态方法,​​+​​代表静态方法
  3. 访问成员方法貌似加​​self​​关键词没用
  4. 不能顾名思义,否则入坑,比如​​@interface​​实际上是类的修饰符声明
  5. 实现文件盒声明文件都特么要写​​@end​
  6. 基本上对象的操作都得用​​[​​​ 和​​]​​​包裹起来,用习惯了就好,我感觉这就是开发工具取出东西的时候逻辑混乱,导致开发了这样操蛋另类得语法. c++用 ​​->​​​ php用​​=>​​​java c#用​​.​​​ 如 person.eat() 参数则用​​,​​​区分 而 object c呢访问之间是空格,但是左边和右边用​​[​​​ 和​​]​​​包裹,参数也比较奇葩,用​​:​
  7. 没有包名得概念,都是用前缀区分.也就是冲突这种东西自己把控.
  8. object c 的关键词都携带​​@​​ 不带的关键词则代表是c的关键字.

和其他语言代码举例

Student *student= [[Student alloc] init];
[student publicObjectSetAgeMethod:10];//参数用冒号
int age= [student publicObjecGetAgetMethod];

java代码

Student student =new Student();
student. publicObjectSetAgeMethod(10);
int age=student. publicObjecGetAgetMethod();

撸代码

​.h​​文件

#import <Foundation/Foundation.h>
@interface Student :NSObject
{

int age;
}

-(int) publicObjecGetAgetMethod;// get
-(void)publicObjectSetAgeMethod:(int)agearg;//set




@end

​.m​​文件

#import <Foundation/Foundation.h>
#import "Student.h"
@implementation Student
-(int)publicObjecGetAgetMethod{
return age;
}
-(void)publicObjectSetAgeMethod:(int)argearg{
// self.
age=argearg;
NSLog(@"call set arg arg %d ",argearg);

}

@end

操作文件

#import <Foundation/Foundation.h>
#import "Student.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSLog(@" arg value %s","fff");//参数字符串不需要加@

// Student *student= [Student alloc];
// student= [student init];

Student *student= [[Student alloc] init];
[student publicObjectSetAgeMethod:10];
int age= [student publicObjecGetAgetMethod];
NSLog(@"call age %d ",age);

// [student release];//
}
return 0;
}

进阶多参

声明文件

-(int)age;
-(int)no;
-(void)setNoAndAge:(int)agearg novalue:(int)noarg;

实现文件

-(int)age{
return age;
}
-(int)no{
return no;

}
-(void)setNoAndAge:(int)ageargxxx novalue:(int)noargxxx{

age=ageargxxx;
no=noargxxx;
}

调用

NSLog(@"call age %d ",age);
[student setNoAndAge:10 novalue:20120206];
age=[student age];
NSLog(@"call age %d no %d;",age,[student no]);
  1. 声明和实现的参数名字可以不一样.
  2. 第二个参数 冒号前面​​:​​​必须加参数描述加在冒号前面,,调用的时候用来告诉这个东西是啥,如​​[student setNoAndAge:10 novalue:20120206];​​ 其中novalue就是描述,有人认为这是object c得优点 那我跟你说吧,其他开发工具能自己根据参数名自动显示参数名,哪有objectc这样必须强制浪费别人时间.,
  3. 目前我现在没有办法通过​​self.​​读取成员变量,也就是说如果参数得名字和成员变量名字一样就翻车了.

标签:Student,no,int,xcode,object,吐槽,student,age
From: https://blog.51cto.com/u_15458814/5882964

相关文章