Objective-C KVC

//
//  Info.h
//  cts
//
//  Created by jiangzhihao on 2018/11/9.
//  Copyright © 2018年 蒋智昊. All rights reserved.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface Info : NSObject
{
    
}

// 括号外面可以申明属性和方法
// 用@property申明属性
// 说明:属性会自动合成setter和getter方法
@property int msgcode;

// 方法:方法分为对象方法和类方法
// 对象方法以-开头,只有这个类中的某个具体对象才能调用
// 类方法以+开头,类方法只能用类去调用

// 声明一个对象方法
- (NSString *)getAction:(NSString *)code;

// 声明一个类方法
+ (void)setAction;

@end



NS_ASSUME_NONNULL_END
//
//  Info.m
//  cts
//
//  Created by jiangzhihao on 2018/11/9.
//  Copyright © 2018年 蒋智昊. All rights reserved.
//

#import "Info.h"

@implementation Info


// 声明一个对象方法
- (NSString *)getAction:(NSString *)code
{
    NSString *str = [NSString stringWithFormat:@"%@%@", @"hi", code];
    return str;
}

// 声明一个类方法
+ (void)setAction
{
    NSLog(@"action");
}

@end
// 调用类方法测试结果
   [Info setAction];
   // 创建对象info
   Info *info =[[Info alloc]init];
   NSString *say = [info getAction:@"0001"];
   NSLog(@"%@", say);
   
   // VC (Key Value Coding) Objective-C 允许以字符串形式间接操作对象的属性
   // 这种方式的全称是 Key Value Coding (简称KVC),即键值编码
   // 通过KVC方式设置属性
   Info *inf = [[Info alloc] init];
   [inf setValue:@1000 forKey:@"msgcode"];
   // 通过KVC方式读取属性
   NSString *msgcode = [inf valueForKey:@"msgcode"];
   NSLog(@"%@", msgcode);

Objective-C NSArray

NSArray *arr = [NSArray arrayWithObjects:@"111", @"222", @"333", nil];
    // 判断数组内是否含有某一个对象
    if ([arr containsObject:@"333"]) {
        NSLog(@"含有对象");
    }
    
    // 获取某个对象在数组中的下标值
    NSUInteger index = [arr indexOfObject:@"222"];
    NSLog(@"%ld", index);
    
    // 数组的遍历
    for (NSInteger i = 0; i < [arr count]; i++) {
        NSLog(@"arr[%ld] = %@", i, arr[i]);
    }
    
    // 快速枚举法
    for(id obj in arr) {
        NSLog(@"obj = %@", obj);
    }

Objective-C NSMutableArray

// 创建NSMutableArray
    NSMutableArray *userArr = [[NSMutableArray alloc]init];
    // 添加一个元素
    [userArr addObject:@"11"];
    NSLog(@"arr = %@", userArr);
    // 添加多个元素
    [userArr addObjectsFromArray:@[@"11", @"22", @"33"]];
    NSLog(@"arr = %@", userArr);
    // 插入元素
    [userArr insertObject:@"Two" atIndex:1];
    NSLog(@"arr = %@", userArr);
    // 替换元素
    [userArr replaceObjectAtIndex:0 withObject:@"1"];
    NSLog(@"arr = %@", userArr);
    // 查询元素
    NSString *result = [userArr objectAtIndex:1];//arr[1]
    NSLog(@"result = %@", result);
    // 删除指定元素
    [userArr removeObject:@"11"];
    NSLog(@"arr = %@", userArr);
    // 删除指定下标的元素
    [userArr removeObjectAtIndex:2];
    NSLog(@"arr = %@", userArr);
    // 删除最后一个元素
    [userArr removeLastObject];
    NSLog(@"arr = %@", userArr);
    // 删除所有元素
    [userArr removeAllObjects];
    NSLog(@"arr = %@", userArr);
    // 删除数组中含有的所有元素
    [userArr removeObjectsInArray:@[@"1", @"22"]];
    // 交换元素
    NSMutableArray *nsArr1 = [NSMutableArray arrayWithObjects:@"1",@"2",@"3",nil];
    [nsArr1 exchangeObjectAtIndex:1 withObjectAtIndex:2];
    NSLog(@"arr1 = %@", nsArr1);

Objective-C 类与属性 减号表示对象方法 加号表示静态方法(类方法)

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

@interface LoginViewController : UIViewController<UIGestureRecognizerDelegate, UITextFieldDelegate, UITextViewDelegate>

@property (weak, nonatomic) IBOutlet UITextField *usercodeTextField;
@property (weak, nonatomic) IBOutlet UITextField *userpwdTextField;
@property (weak, nonatomic) IBOutlet UIButton *loginButton;

// 例子: 一个方法可以包含多个参数
- (void) setNameStr: (NSString *)aName secondName: (NSString *) bName thirdName: (NSString *) cName;

@end

特点:
函数的返回类型和参数类型必须用括号。
函数的形参用冒号表示。 阅读全文

Objective-C 一个方法多个参数

// 例子: 一个方法可以包含多个参数
- (void) setNameStr: (NSString *)aName secondName: (NSString *) bName thirdName: (NSString *) cName;

/ 例子: 一个方法可以包含多个参数
- (void) setNameStr: (NSString *)aName secondName: (NSString *) bName thirdName: (NSString *) cName {
    NSString *a = aName;
    NSString *b = bName;
    NSString *c = cName;
    NSLog(@"%@%@%@", a, b, c);
}

// 测试
[self setNameStr: @"蒋" secondName: @"智" thirdName: @"昊"];