http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 3934|回复: 6

[新手开发之旅] iOS新手开发之旅-Object C 基础知识

[复制链接]
发表于 2018-11-26 18:55:15 | 显示全部楼层 |阅读模式
                 文章导航  

       【iOS新手开发之旅】   http://www.sufeinet.com/thread-24000-1-1.html


   OC特点
  • 支持C语法
  • 支持面向对象特性
  • 兼容性好,可以同时在项目中使用OC、C++,也可以引入C、C++库文件
  • OC中没有命名空间机制,也没有包的概念,为了区分不同的类,在类名加前缀
  • OC中关键字表示都以@开头,用于区分C和C++的关键字,字符串也以@开头,如@public、@protected、@private、@”Hello World”


   OC基本数据类型  
    基本数据类型:数值型(整型、浮点型),字符型(char)、布尔型(BOOL)、空类型(Void)、Block类型、指针数据类型(class、id类型)、特殊类型(SEL、nil)
   1、instancetype和id类型


        instancetype可以作为返回类型,可以返回和方法所在类相同类型的对象,只能作为返回值


        id可以作为返回类型,返回任意类型的objcetive-c的对象类型,既可以作为返回值也可以作为参数


   类与属性
   1、 类的声明语法

         
[Objective-C] 纯文本查看 复制代码
@interface Person : NSObject{
    属性声明
}
    方法声明
@end


         特点:

  • @interface:相当于Java中的class
  • 类名后面的冒号:相当于Java中的extends

     2、类的实现语法
         
[Objective-C] 纯文本查看 复制代码
@implementation Person
    方法实现{

    }
@end

完整例子:
    3ECD530B14F23819EA476AF04122F763.png 4377A6A3815DA9265A9E6ED25BC0672F.png
     3.创建对象
     
[Objective-C] 纯文本查看 复制代码
//第一种创建方式:创建一个可用的对象
Person *p=[Person new];
//new方法的内部会分别调用两个方法来完成2件事情
//1、使用alloc方法来分配存储空间(返回分配的对象)
//2、使用init方法来对对象进行初始化

//1、调用类方法+alloc分配存储空间,返回未经初始化的对象
Person *p1=[person  alloc];
//2、调用对象方法-init进行初始化,返回对象本身
Person *p2=[p1 init];
//第二种创建方式:以上2步简化为
Person *p=[[Person alloc] init];

//默认初始化完毕后,所有成员变量的值都为0
//用完对象要释放内存
[lisi release];


      new方式和alloc/init方式有什么区别?
  • new和alloc/init在功能上是一致的,分配内存并完成初始化
  • 采用new方式只能采用默认的init方法完成初始化
  • 采用alloc的方式可以用自定义的构造方法完成初始化
      4.访问对象属性
   
[Objective-C] 纯文本查看 复制代码
//调用类的属性,语法:对象->属性名
lisi->age;
lisi->name;
//或者:(*对象名).对象属性
(*lisi).name

      5.调用方法
        
[Objective-C] 纯文本查看 复制代码
//调用无参方法,语法:[对象名 方法名]
[Person eat]
[Person run]
//调用有参方法,语法:[对象名 方法名:参数]
[Person eat:@"吃虾"]
[Person run:5]


     6.@property和@synthesize

        在头文件中声明属性
                  
[Objective-C] 纯文本查看 复制代码
//编译器会自动补出其set和get方法@property int age;


         在m文件中实现
  
         
[Objective-C] 纯文本查看 复制代码
//编译器会自动生成set和get方法的实现,默认已经自动@synthesize属性的值
@synthesize age;


          构造方法
      1.默认的构造方法
         
[Objective-C] 纯文本查看 复制代码
- (instancetype)init{
    if(slef = [super init]){
        //初始化
    }
    return self;
}

         
          2.自定义构造方法            

          一般构造方法都以init开头,这样并不是复写系统默认的构造方法,而是再添加一个构造方法

            
[Objective-C] 纯文本查看 复制代码
- (instancetype)initWithDict:(NSDictionary *)dict{
    if(slef = [super init]){
        //初始化并赋值
        self.name = dict[@"name"];
    }
    return self;
}



下一篇   创建第一个iPhone应用程序









1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
 楼主| 发表于 2018-12-6 11:58:34 | 显示全部楼层
Object-C 数组NSArry与可变数组NSMutableArray
http://www.sufeinet.com/thread-24127-1-1.html
(出处: 苏飞论坛)
 楼主| 发表于 2018-11-26 18:59:10 | 显示全部楼层
函数

1、减号表示对象方法,语法:-(返回值类型)方法名:(参数类型)参数名

[C#] 纯文本查看 复制代码
@interface Person : NSObject
-(Void) someMethod;
-(Void) someMethodWithValue:(someType)Value;
@end

特点:

  • 函数的返回类型和参数类型必须用括号
  • 函数的形参用冒号表示
[color=rgba(0, 0, 0, 0.749019607843137)] 2、加号表示静态方法(类方法),语法:+(返回值类型)方法名:(参数类型)参数名

[C#] 纯文本查看 复制代码
@interface NSString: NSObject
+(id) string;
+(id) stringWithString:(NSString *)astring;
+(id) stringWithFormat:(NSString *)format,...;
@end


区别:

  • 对象方法可以直接访问属性,静态方法不能访问属性
  • 静态方法可用类名直接调用方法,而对象方法不行


发表于 2018-11-26 19:01:37 | 显示全部楼层
强烈支持楼主ing……
发表于 2018-11-26 20:18:01 | 显示全部楼层
强烈支持楼主ing……
发表于 2018-11-27 14:10:55 | 显示全部楼层
我只是路过打酱油的。
发表于 2018-11-27 14:15:33 | 显示全部楼层
咕咚 咕咚  无回帖,不论坛,这才是人道。
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-25 03:39

© 2014-2021

快速回复 返回顶部 返回列表