zoukankan      html  css  js  c++  java
  • Object-C基础

    cocoa

    类:

    传统的写法:
    Demo.h

    //
    //  Demo.h
    //  demoClass
    //
    //  Created by 王 on 13-12-16.
    //  Copyright (c) 2013年 Bo Li. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    @interface Demo : NSObject
    {
        int age;
        int ide;
        NSString *name;
    }
    
    //初始化方法
    -(id)initWithAge:(int)_age andIde:(int)_ide andName:(NSString *)_name;
    
    -(void)setAge:(int)_age;
    
    -(int)getAge;
    
    -(void)setIde:(int)_ide;
    
    -(int)getIde;
    
    -(void)setName:(NSString *)_name;
    
    -(NSString *)getName;
    
    @end

    Demo.m

    //
    //  Demo.m
    //  demoClass
    //
    //  Created by 王 on 13-12-16.
    //  Copyright (c) 2013年 Bo Li. All rights reserved.
    //
    
    #import "Demo.h"
    
    @implementation Demo
    //初始化方法,只有[super init]初始化父类成功后子类才能初始化
    -(id)initWithAge:(int)_age andIde:(int)_ide andName:(NSString *)_name{
        if(self = [super init]){
            age = _age;
            ide = _ide;
            name = _name;
        }
        return self;
    }
    
    -(void)setAge:(int)_age{
        age = _age;
    }
    
    -(int)getAge{
        return age;
    }
    
    -(void)setIde:(int)_ide{
        ide = _ide;
    }
    
    -(int)getIde{
        return ide;
    }
    
    -(void)setName:(NSString *)_name{
        name = _name;
    }
    
    -(NSString *)getName{
        return name;
    }
    
    @end

    main.m

    //
    //  main.m
    //  demoClass
    //
    //  Created by 王 on 13-12-10.
    //  Copyright (c) 2013年 Bo Li. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    #import "Test.h"
    #import "Demo.h"
    int main(int argc, const char * argv[])
    {
    
        @autoreleasepool {        
            // insert code here...
            NSLog(@"Hello, World!");
            
            Demo *d = [[Demo alloc] initWithAge:15 andIde:212321 andName:@"lily"];
            
            NSLog(@"she is %d,and hers identify is %d,she names %@",[d getAge],[d getIde],[d getName]);
    
            
        }
        return 0;
    }

    OC特有的用法(设置器@property和访问器@synthesize)
    Demo.h

    //
    //  Demo.h
    //  demoClass
    //
    //  Created by 王 on 13-12-16.
    //  Copyright (c) 2013年 Bo Li. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    @interface Demo : NSObject
    {
        int age;
        int ide;
        NSString *name;
    }
    
    //初始化方法
    -(id)initWithAge:(int)_age andIde:(int)_ide andName:(NSString *)_name;
    
    @property(nonatomic) int age;
    @property(nonatomic) int ide;
    @property(nonatomic,retain) NSString *name;
    @end

    Demo.m

    //
    //  Demo.m
    //  demoClass
    //
    //  Created by 王 on 13-12-16.
    //  Copyright (c) 2013年 Bo Li. All rights reserved.
    //
    
    #import "Demo.h"
    
    @implementation Demo
    //初始化方法,只有[super init]初始化父类成功后子类才能初始化
    -(id)initWithAge:(int)_age andIde:(int)_ide andName:(NSString *)_name{
        if(self = [super init]){
            age = _age;
            ide = _ide;
            name = _name;
        }
        return self;
    }
    
    @synthesize age;
    @synthesize ide;
    @synthesize name;
    
    @end

    main.m

    //
    //  main.m
    //  demoClass
    //
    //  Created by 王 on 13-12-10.
    //  Copyright (c) 2013年 Bo Li. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    #import "Test.h"
    #import "Demo.h"
    int main(int argc, const char * argv[])
    {
    
        @autoreleasepool {        
            // insert code here...
            NSLog(@"Hello, World!");
            
            Demo *d = [[Demo alloc] initWithAge:15 andIde:212321 andName:@"lily"];
            
            NSLog(@"she is %d,and hers identify is %d,she names %@",[d age],[d ide],[d name]);
    
            
        }
        return 0;
    }

     备注:
    在@property()得括号中,可以填写的属性有:
    readwrite:默认
    readonly:只读,意味着没有set方法,只有get方法
    assign:默认,引用计数不增加(一般用于基本数据类型,如int)
    retain:引用计数增加(一般用于对象方面,如NSString *name)
    actomic:默认,原子性
    nonatomic:非原子性。是OC中一种线程保护技术,防止在未完成的时候,被另外一个线程使用,造成数据错误。

    点语法:(看下面代码即可明白)

    //
    //  main.m
    //  demoClass
    //
    //  Created by 王 on 13-12-10.
    //  Copyright (c) 2013年 Bo Li. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    #import "Test.h"
    #import "Demo.h"
    int main(int argc, const char * argv[])
    {
    
        @autoreleasepool {        
            // insert code here...
            NSLog(@"Hello, World!");
            
            Demo *d = [[Demo alloc] initWithAge:15 andIde:212321 andName:@"lily"];
            
            d.age = 10;
            d.name = @"hhaa";
            
            NSLog(@"she is %d,and hers identify is %d,she names %@",[d age],[d ide],[d name]);
    
            
        }
        return 0;
    }

     static关键字:
    类体内的全局变量声明。

    static int count = 1000;

    要点:
    1.声明在任何方法之外;
    2.在该文件内;
    3.所有位于这条语句之后的方法都可以访问count得值,而其他文件中的方法则不可。

     UIKIT

    UIView:视图的基础,
    UIViewControl:视图控制器的基类,
    UIResponder:表示一个可以接收触摸屏上的触摸事件的对象。

    窗口(UIWindow):
          窗口是视图(UIView)的一个子类。
    窗口的主要功能:
      1.提供一个区域来显示视图;
      2.将事件(event)分发给视图;
    注意:一个应用通常只有一个窗口,但是也有例外。

    UIScreen:获取硬件设备的屏幕尺寸,在做适配的时候用到,比如iphone的屏幕和ipad的屏幕。

    IOS坐标系统:

    CGPoint potin = CGPointMake(x,y);//位置
    CGSize size = CGSizeMake(w,h);//大小
    CGRect rect = CGRectMake(x,y,w,h);//位置和大小。

    Frame,Bounds,Center:
    Frame:以其父视图为起点,得到他自己的位置信息;
    Bounds:以IOS的坐标(0,0)为原点;
    Center:表示视图中心点所在位置。

     创建视图:

        //通过xib的方式来创建视图对象
        NSBundle *bundle = [NSBundle mainBundle];
        NSArray *arr = [bundle loadNibNamed:@"myView" owner:self options:nil];
        UIView *myView = [arr objectAtIndex:0];
        
        //通过代码创建视图对象
        CGRect viewRect = CGRectMake(0, 0, 100, 100);
        UIView *myView = [[UIView alloc] initWithFrame:viewRect];

    视图调用方法(视图的层次关系):

    //基本的添加和删除子视图
    addSubview:                     //添加子视图
    insertSubview:atIndex:          //视图插入到指定索引位置
    insertSubview:aboveSubview:     //视图插入指定视图之上
    insertSubview:belowSubview:     //视图插入指定视图之下
    bringSubviewToFront:            //把视图移动到最顶层
    sendSubviewToBack:              //把视图移动到最底层
    exchangeSubviewAtIndex:withSubviewAtIndex: //把两个索引对应的视图调换位置
    removeFromSuperview:            //把视图从父视图中移除

    备注:当调用addSubview的时候会对其进行保留,可理解为retain一个对象;
             当调用removeFromSuperview的时候会对其进行释放,可理解为release一个对象。

  • 相关阅读:
    检测对象类型的两种方式,constructor属性和instanceof
    Javascript中的事件
    工厂模式、寄生构造函数模式、稳妥构造函数模式比较
    ECMAScript中的原型继承
    Javascript中new的作用
    js组合继承
    【原型模式】--重写原型对象prototype的影响
    动态原型模式
    js类型检测
    Javascript中的继承与复用
  • 原文地址:https://www.cnblogs.com/thinksasa/p/3196149.html
Copyright © 2011-2022 走看看