OC5_构造方法与self指针
//
// Dog.h
// OC5_构造方法与self指针
//
// Created by zhangxueming on 15/6/9.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import <Foundation/Foundation.h> @interface Dog : NSObject
{
NSString *_name;
NSInteger _age;
}
//必须以 initWithXXX开头
//在一个类里面可以有多个构造方法, 但是一个对象只可以调用一次构造方法 //无参数
- (id)init;//返回对象的地址 //带一个参数
- (id)initWithName:(NSString *)name;
- (id)initWithAge:(NSInteger)age; //带两个参数
- (id)initWithName:(NSString *)name andAge:(NSInteger)age; //getter方法
- (NSString *)name; - (NSInteger)age; //setter方法
- (void)setName:(NSString *)name andAge:(NSInteger)age; //类方法
+ (void)testDog; @end
//
// Dog.m
// OC5_构造方法与self指针
//
// Created by zhangxueming on 15/6/9.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import "Dog.h" @implementation Dog - (instancetype)init
{
if (self = [super init]) {//引用父类方法的编译器符号
}
return self;
} - (id)initWithName:(NSString *)name
{
if (self = [super init]) {
_name = name;
}
return self;
} - (id)initWithAge:(NSInteger)age
{
if (self = [super init]) {
_age = age;
}
return self;
} - (id)initWithName:(NSString *)name andAge:(NSInteger)age
{
if(self = [super init])
{
_name = name;
_age = age;
}
return self;
} - (NSString *)name
{
return _name;
} - (NSInteger)age
{
return _age;
} - (void)setName:(NSString *)name andAge:(NSInteger)age
{
_name = name;
_age = age;
} +(void)testDog
{
Dog *xiaoHei = [[self alloc] initWithName:@"小黑" andAge: ];
NSLog(@"name = %@ age = %li", [xiaoHei name], [xiaoHei age]);
} @end
//
// main.m
// OC5_构造方法与self指针
//
// Created by zhangxueming on 15/6/9.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import <Foundation/Foundation.h>
#import "Dog.h"
//1.#ifndef "Dog.h" #define "Dog.h" #endif,防止头文件被重定义
//2.@class 打断循环链 防止循环包含 int main(int argc, const char * argv[]) {
@autoreleasepool {
[Dog testDog]; Dog *xiaoBai = [[Dog alloc] init];
[xiaoBai setName:@"小白" andAge:];
NSLog(@"name = %@ age = %li", [xiaoBai name], [xiaoBai age] ); }
return ;
}
OC5_构造方法与self指针的更多相关文章
- (二)学习C#之内存管理
一.当你运行你的程序通常都会访问哪些内存空间呢? 电脑自言自语道,“这个人要声明一个整数”或“这个人个方法”或“这个人要创建一个对象” 1.这些信息究竟是存在内存里的什么地方呢? 2.或者说用于描述这 ...
- JS类、对象、方法、prototype、_proto_
案例代码: function People(name) { //对象属性 this.name = name; //对象方法 this.Introduce = function() { alert(&q ...
- OC基础--构造方法 id类型
new方法实现原理: new做了三件事情 1.开辟存储空间 + alloc 方法 2.初始化所有的属性(成员变量) - init 方法 3.返回对象的地址 [Person new]; == [[Pe ...
- OC 类方法,对象方法,构造方法以及instancetype和id的异同
OC 类方法,对象方法,构造方法以及instancetype和id的异同 类方法: 类方法是可以直接使用类的引用,不需要实例化就可以直接使用的方法.一般写一些工具方法. 类方法: 声明和实现的时候,以 ...
- OC-id、构造方法
id 简介 万能指针,能指向任何OC对象,相当于NSObject * id类型的定义 typedef struct objc_object { Class isa; } *id; 使用 // 注意:i ...
- c#重点[数据类型,构造方法,变量,变量,运算符,装箱,拆箱]
1.命名规范 类 :名词 每个单词的首字母大写 Dog Student PersonClass 字段:首个字母小写,如果有多个单词,后面的单词首字母大写 string name=" ...
- OC基础--构造方法
OC语言中类的构造方法学了两种: 一.方法一:[类名 new] 例:[Person new] 缺点:可扩展性不强,假如在Person类中有_age 成员变量,在初始化时想让_age 中的值为20,ne ...
- JAVA与指针
首先,提个问题:JAVA中没有指针,JAVA中有指针,哪个一个对呢? 答:都对,JAVA中没有指针,因为我们不能对指针直接操作,像C++那样用->来访问变量. JAVA有指针,因为JDK中封装了 ...
- Java-->多线程复制(文件指针)
--> 这里用到两种方法...其实也不算两种,就一点点不一样而已... ---> Test 测试类 package com.dragon.java.multithreadcopy; imp ...
随机推荐
- jQuery插件- Autocomplete应用详解
项目中有时会用到自动补全查询,就像Google搜索框.淘宝商品搜索功能,输入汉字或字母,则以该汉字或字母开头的相关条目会显示出来供用户选择, autocomplete插件就是完成这样的功能. auto ...
- shuffle 过程
Shuffle描述着数据从map task输出到reduce task输入的这段过程(Shuffle的正常意思是洗牌或弄乱). 以下是官网的流程图: 从最基本的要求来说,我们对Shuffle过程的期望 ...
- DNS服务未响应的简单解决办法
今天晚上下班回家,打开电脑,发现打不开网页了,同一个wifi环境下,我的手机是可以连接上的,网上搜了一大推,又是重启服务,又是重新填写dns服务地址,都不管用, 该怎么办呢??. 其实发现很简单,打开 ...
- Java 判断是否为汉字 判断是否为乱码 判断字符串是否为双整型数字 整数 数字
/** * 判断是否为汉字 * * @param str * @return */ public static boolean isGBK(String str) { char[] ch ...
- systemd service
Man page systemd.unit SYSTEMD.UNIT(5) systemd.unit SYSTEMD.UNIT(5) NAME systemd.unit - Unit configur ...
- [Practical Git] Switching between current branch and last checkout branch
When working on a project, it is much easier to work on features and bugs in isolation of the rest o ...
- jquery插件开发(checkbox全选的简单实例)
html代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...
- 多线程NSOperation
NSOperation(经常使用): 1.为什么会有NSOperation?弥补gcd的一些问题:1)下载为例子:如果gcd放到队列中的block操作面对网络有问题,block之外无法取消bloc ...
- compile php 5.4
原先的字串 ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --enable-zip --en ...
- 数据结果与算法分析(1)——算法分析
在确定一个算法正确的同时,也要保证算法的有效性.算法分析的最重要的标准时运行时间T(N),运行时间与输入元素个数N有关. 数学基础 T(N) = O(f(N)) 表示T(N ...