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: andIde: andName:@"lily"]; NSLog(@"she is %d,and hers identify is %d,she names %@",[d getAge],[d getIde],[d getName]); }
return ;
}
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: andIde: andName:@"lily"]; NSLog(@"she is %d,and hers identify is %d,she names %@",[d age],[d ide],[d name]); }
return ;
}
备注:
在@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: andIde: andName:@"lily"]; d.age = ;
d.name = @"hhaa"; NSLog(@"she is %d,and hers identify is %d,she names %@",[d age],[d ide],[d name]); }
return ;
}
static关键字:
类体内的全局变量声明。
static int count = ;
要点:
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:]; //通过代码创建视图对象
CGRect viewRect = CGRectMake(, , , );
UIView *myView = [[UIView alloc] initWithFrame:viewRect];
视图调用方法(视图的层次关系):
//基本的添加和删除子视图
addSubview: //添加子视图
insertSubview:atIndex: //视图插入到指定索引位置
insertSubview:aboveSubview: //视图插入指定视图之上
insertSubview:belowSubview: //视图插入指定视图之下
bringSubviewToFront: //把视图移动到最顶层
sendSubviewToBack: //把视图移动到最底层
exchangeSubviewAtIndex:withSubviewAtIndex: //把两个索引对应的视图调换位置
removeFromSuperview: //把视图从父视图中移除
备注:当调用addSubview的时候会对其进行保留,可理解为retain一个对象;
当调用removeFromSuperview的时候会对其进行释放,可理解为release一个对象。
Object-C基础的更多相关文章
- JavaScript对象 Object类型基础
前言 JavaScript 对象是整个语言学习的一个难点.本文主要带大家入门学习Object知识 对象定义 javascript的基本数据类型包括undefined.null.boolean.stri ...
- Object c 基础知识
文件类型说明:.h 头文件,用于定义类.实例变量及类中的方法等定义信息(interface)..m 源文件,定义方法体,可实现objce-c和c方法(implementation)..mm c++源文 ...
- Object -c基础知识(5)--release 之后 retainCount为何为1
在XCode中加入如下代码: UILabel *label=[UILabel alloc]; [label setText:@"TestLabel"]; NSLog(@" ...
- .NET面试题系列[13] - LINQ to Object
.NET面试题系列目录 名言警句 "C# 3.0所有特性的提出都是更好地为LINQ服务的" - Learning Hard LINQ是Language Integrated Que ...
- java语言中Object转为String的几种形式
在java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能.本文将对常用的转换方法进行一个总结.常用的方法有Object.toString(),(String)要转换的对象,St ...
- C#/.NET 基础学习
初识C# C#是微软公司发布的面向对象的.运行于.NET Framework之上的高级程序设计语言.与Java有着明显不同,借鉴Delphi的特点,与COM(组件对象模型)直接集成,是微软公司 .NE ...
- Java 类型转换以及Object转成其他类型
Object转int int count=(int)map.get("count") int count=Integer.parseInt((String)map.get(&quo ...
- JavaScript 中的Object的使用详解笔记(一)
昨天的学习笔记,今天更新上.第三遍看oop,还是理解的比较到位了. 1.JavaScript的组成:ECMAScript(最新6) + DOM + BOM 2.数组与对象的应用: object的基 ...
- 转!!java中Object转String
Object转为String的几种形式 在java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能.本文将对常用的转换方法进行一个总结.常用的方法有Object.toString ...
- java中Object转String
Object转为String的几种形式 在java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能.本文将对常用的转换方法进行一个总结.常用的方法有Object.toStri ...
随机推荐
- js中关于arguments
- ylb:SQL Server中的escape(逃逸)
ylbtech-SQL Server:SQL Server-SQL中的escape(逃逸) SQL Server中的escape(逃逸). 1,SQL Server中的escape(逃逸) 返回顶部 ...
- Android百度地图开发(五)公交线路详情搜索、多条线路显示
一.公交线路详情检索 获取公交线路的详情主要分来两步,1.获取公交线路的Uid,2.通过Uid获取公交线路详情. 1.获取公交线路的Uid: /* * 获得公交线路图的Uid,并且根据系Uid发起公交 ...
- Cracking the Code Interview 4.3 Array to Binary Tree
Given a sorted (increasing order) array, write an algorithm to create a binary tree with minimal hei ...
- the hard thing about hard things 书摘
1. from communist to VC 领导力是什么,书后面还举了乔布斯的例子,比如NEXT公司时期就是如此,是什么吸引了那些人在前景不明时还跟随乔布斯? 作者用自己与妻子的相遇说明,不要 ...
- 配置spring管理的bean的作用域
.singleton 在每一个spring Ioc容器中一个bean定义只有一个对象实例.默认情况下会在容器启动时初始化bean,但我们可以指定bean节点的lazy-init = "tru ...
- [转载]我读过最好的Epoll模型讲解
转载来自:http://blog.csdn.net/mango_song/article/details/42643971 首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行 ...
- C++设计模式——单例模式
问题描述 现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能:在实际开发过程中,会专门有一个日志模块,负责写日志,由于在系统的任何地方,我们都有可能要调用日志模块中的函数,进 ...
- 【Python学习笔记】集合
概述 集合的一般操作 内建函数进行标准操作集合 数学运算符进行标准操作集合 集合的应用 概述 python的集合(set)是无序不重复元素集,是一种容器.集合(set)中的元素必须是不可变对象,即可用 ...
- navicat 或者workbench 无法连接127.0.0.1(61)的解决方法
1.输入mysql -uroot 进入命令行模式, 2.输入"show variables like '%sock%';"查看sock文件所在位置 如: 3.配置客户端(以navi ...