zoukankan      html  css  js  c++  java
  • 程序的执行

    1,从终端执行代码。

    -fobj  意思是编译OC语言。

    -arc  使用自动引用计数。

    -framework  链接到Foundation框架。

    -o 指定执行文件,文件会被创建。

    clang -fobjc-arc -framework Foundation main.m -o mappp

    别忘了加arc。

    编译的main.m代码。

    #import <Foundation/Foundation.h>

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

            @autoreleasepool {

                    NSString *helloString = @"Hello World";

                    NSLog(@"%@", helloString);

            }

            return 0;

    }

    2,控制台打印,

    NSLog();注意类型。

    3,创建一个自定义类,比如Car.h

    #import <Foundation/Foundation.h>

    @interface Car : NSObject

    @end

    Car.m

    #import “Car.h"

    @implementation Car

    @end

    用的时候

    Car *car = [[Car alloc] init];

    4,在类中定义属性。

    #import <Foundation/Foundation.h>

    @interface Car : NSObject{

    @private

        NSString *name_;

    }

    @property(strong) NSString *name;

    @end

     

    readwrite 读写属性,需要getter和setter属性。

    readonly  只读属性,只需要getter。

    strong  强指针,保留内存。

    weak  弱引用,当对象为nil时,内存释放。

    assign 简单赋值,不更改索引计数。

    nonatomic 非原子性访问,对属性赋值的时候不加锁,多线程并发访问会提高性能。

    copy 建立一个索引计数为1的对象,然后释放旧对象对NSString

    retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1

    5,@synthesize

    比如你的Car.h

    #import <Foundation/Foundation.h>

    @interface Car : NSObject

    @property(strong) NSString *name;

    @end

     

    Car.m

    #import "Car.h"

    @implementation Car

    @synthesize name;

    @end

    你可以使用.或发送方法获取name值。

    car.name = @"Sports Car";

    NSLog(@"car is %@", car.name);

    你甚至可以设置name值,具体示例。

    代码示例。

     Car *car = [[Car alloc] init];

    car.name = @"Sports Car";

    NSLog(@"car.name is %@", car.name);

    [car setName:@"New Car Name"];

    NSLog(@"car.name is %@", [car name]);

    6,添加类方法。

    +(void)writeDescriptionToLogWithThisDate:(NSDate *)date;

    调用类方法....全是基础我就不细写了。

    [Car writeDescriptionToLogWithThisDate:[NSDate date]];

    类方法不用实例话

    7,实例方法。 太基础,不细写了。

    -(void)writeOutThisCarsState{

        NSLog(@"This car is a %@", self.name);

    }

            Car *newCar = [[Car alloc] init];

     

            newCar.name = @"My New Car";

     

            [newCar writeOutThisCarsState];

    8,扩展类

    Listing 1-13. HTMLTags.h

    #import <Foundation/Foundation.h>

    @interface NSString (HTMLTags)

    -(NSString *) encloseWithParagraphTags;

    @end

    Listing 1-14. HTMLTags.m #import "HTMLTags.h"

    @implementation NSString (HTMLTags)

    -(NSString *) encloseWithParagraphTags{

            return [NSString stringWithFormat:@"<p>%@</p>",self];

    }@end

    Listing 1-15. main.m

    #import "HTMLTags.h"

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

            @autoreleasepool {

    NSString *webText = @"This is the first line of my blog post";

    //Print out the string like normal:

    NSLog(@"%@", webText);

    //Print out the string using the category function:

    NSLog(@"%@", [webText encloseWithParagraphTags]);

    }

     

    return 0; }

    注意下@interface NSString,然后用的时候[webText encloseWithParagraphTags],就是说给NSString添加了一个自己的方法。

     

  • 相关阅读:
    C++奇数阶幻方(主动生成)
    一次C++作业 C++的I/O流类库 3 (学生注册信息登记程序)
    一次C++作业 C++的I/O流类库2 [文本文件和二进制文件]
    一次C++作业(模板类的构造& C++的I/O流类库)1
    一次C++作业 try-throw-catch
    关于英语作文AI批改的思考(含定向高分方案)
    PhoneNumber类
    一次C++作业
    服务器较全面入手介绍(持续更新)
    JS中多个onload冲突解决办法
  • 原文地址:https://www.cnblogs.com/guanliyang/p/3913412.html
Copyright © 2011-2022 走看看