• IOS语言总结


    本文主要介绍和C++不同的地方。

    1、类的定义:

    一个类有两个文件一个.h还有一个.m文件

     1 #import <Foundation/Foundation.h>
     2 
     3 
     4 @interface MyClass : NSObject {
     5 @public
     6     int _a;//公开方法
     7     NSString *_name;
     8 @private
     9     int _b;//私有方法
    10 }
    11 - (void)test; //实例方法
    12 + (void)static_test;//静态方法
    13 @end

    头文件中内容如上。一个类的声明用@interface开头@end结尾。

    大括号中间的成员变量,可以表示public和private还有protected。objc的推荐方式是成员变量前面加“_”。

    方法分成两种,如果是实例方法,也就是非静态的方法必须以“-”开头,如果是静态方法必须要以“+”开头。

     1 #import "MyClass.h"
     2 
     3 
     4 @implementation MyClass {
     5     int a;
     6     float b;
     7 
     8 }
     9 - (void)test {
    10 
    11 }
    12 
    13 + (void)static_test {
    14 
    15 }
    16 
    17 
    18 @end

    m文件类似c++中的cpp文件,一个文件以@implementation开头以@end结尾。

    大括号中间可以声明一些变量,这些变量只能在本文件中使用,有点类似于C的全局静态变量,不过我不明白这个和h文件中的私有变量有什么区别?

    2、键值编码

    @interface User : NSObject
    @property(nonatomic, copy) NSString *name;
    @property(nonatomic, copy) NSString *pass;
    
    
    @end
    1     User *user = [[User alloc] init];
    2     [user setValue:@"jack" forKey:@"name"]; //键值编码
    3     [user setValue:@"123" forKey:@"pass"];

    类似于java的反射获取成员变量,不过更加方便。

    3、类别(category)

    1 @interface User (u)
    2 -(void) login;
    3 @end
    [user login];

    类似于的C#的拓展方法。

    4、扩展 和类别一样,不过没有()中间的类了

    5、委托

     1 @protocol Mydelegate//协议的声明
     2 
     3 - (void)Fun;
     4 
     5 @end
     6 
     7 @interface ClassA : NSObject {
     8 
     9     id <Mydelegate> delegate;//声明一个委托对象,我们要把事情委托给实现Mydelegate协议的类
    10 
    11 }
    12 @property(assign,nonatomic) id<Mydelegate> delegate;
    13 
    14 - (void)FunToOther;
    15 @end
     1 @implementation ClassA {
     2 
     3 }
     4 
     5 - (id)init {
     6 
     7     delegate = [ClassB alloc];
     8     return self;
     9 
    10 }
    11 
    12 - (void)FunToOther {
    13 
    14     [delegate Fun];//将消息发送给委托去处理
    15 
    16 }
    17 
    18 @end
    1 @implementation ClassB {
    2 
    3 }
    4 -(void) Fun{
    5     NSLog(@"BBBBBBB");
    6 
    7 }
    8 @end
    1 ClassA *a1 = [[ClassA alloc] init];
    2     [a1 FunToOther];

    这个就和C#中的委托时一个意思

  • 相关阅读:
    监控 | open-falcon | 安装
    日语 | 日本50音
    PXE | 开关机
    linux | 网卡驱动
    Linux——Centos 7 chmod命令
    Linux——Centos 7 ls命令
    Linux——Centos 7 passwd命令
    Linux——Centos 7 账户管理命令(用户组篇)groupadd groupmod groupdel
    Linux——Centos 7 账户管理命令(用户篇)useradd usermod userdel
    Linux——Centos 7 diff命令
  • 原文地址:https://www.cnblogs.com/HighFun/p/4356602.html
Copyright © 2020-2023  润新知