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 ...
随机推荐
- XMPP——Smack[1]连接、登陆及账户操作
临毕业前,应需求,花了三天写了个小的聊天工具,貌似简陋得很….若有机会再完善吧,目前毕业季,处理毕业事宜,还要准备即将的入职. 眼瞅着大学四年就这么结束了,哎. 开始吧,四篇博文简单介绍下基本实现,由 ...
- java 对视频和图片进行加密解密
import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java. ...
- Android 如何更换屏幕上锁界面背景图片
前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net ...
- 9个使用前必须再三小心的Linux命令
Linux shell/terminal 命令非常强大,即使一个简单的命令就可能导致文件夹.文件或者路径文件夹等被删除.在一些情况下,Linux 甚至不会询问你而直接执行命令,导致你丢失各种数据信 ...
- java_不知道数据类型情况下,数组遍历-反射
if(items.getClass().isArray){ this.collection = new ArrayList(); int length = Array.getLength(items) ...
- Fixflow引擎解析(二)(模型) - BPMN2.0读写
Fixflow引擎解析(四)(模型) - 通过EMF扩展BPMN2.0元素 Fixflow引擎解析(三)(模型) - 创建EMF模型来读写XML文件 Fixflow引擎解析(二)(模型) - BPMN ...
- Android 自定义View修炼-自定义弹幕效果View
一.概述 现在有个很流行的效果就是弹幕效果,满屏幕的文字从右到左飘来飘去.看的眼花缭乱,看起来还蛮cool的 现在就是来实现这一的一个效果,大部分的都是从右向左移动漂移,本文的效果中也支持从左向右的漂 ...
- axel源码学习(0)——程序逻辑
axel简介 axel是一个命令行下的轻量级http/ftp 下载加速工具,支持多线程下载和断点续传,支持从多个镜像下载同一文件. axel的用法如下: 图 0.1 axel usage axel 粗 ...
- PHP Slim 框架初体验之无法访问控制器
话不多说,先把报错贴出来: 刚开始用slim框架,在设置完自动加载文件和路由文件之后,我写了一个控制器: <?php use \Psr\Http\Message\ServerRequestInt ...
- mysql:慢查询日志slow_query_log
1.慢查询日志:当查询超过一定的时间没有返回结果的时候,才会记录到慢查询日志中.默认不开启.采样的时候手工开启.可以帮助DBA找出执行慢的SQL语句 2.常用的参数详解: 注意:修改以下参数,需要重新 ...