//最近总是犯迷糊,关于block对外部变量的引用,今天有时间就写了一下,加深自己的理解,巩固基础知识 1#import <Foundation/Foundation.h>2int gNum = 100;3int main(int argc, constchar * argv[]) {4 @autoreleasepool {5staticint sNum = 100;6 __block int bNum = 100;7int lNum = 100;8int (^sum)(int, int) = ^(int a, int b) {9 NSLog(@"%d %d %d %d",sNum,gNum,lNum,bNum);
10 sNum++...
/*---------- const NSString *str1 = @"123" ----------
| 0x123456 str --- 0x654321 || 123 ---- 0x654321 | // const 修饰的是 *str, 而*str 是值, 所以const 修饰的就是值123
| str --- 0x654221 || ads ---- 0x654221 | // 因为const 修饰的是值 所以 指针str 还是可变的(可以指向其他值)---------- NSString const *str2 = @"456" ----------
| 0x123464 str2 --- 0x654311 || 456 ---- 0x654311 | // 与上...
1. 若想检测对象的等同性,请提供“isEqual”与“hash”方法。- (BOOL)isEqual:(id)object
{if(self == object) return YES;if([self class] != [object class] ) return NO;ConcreteId *otherId = (ConcreteId*)object;if(![someProperty isEqual:otherId.someProperty])return NO;// ……… 比较其他属性值return YES;
}① 特定类所具有的等同性判定方法如果受测的参数与接收该消息的对象都属于同一类,那么就调用自己编写的判定...
1. 在block外面这样:__weak MyController *weakSelf = self 或者 __weak __typeof(self) weakSelf = self;是为了防止强引用导致循环引用2.执行block方法体的时候也可以转换为强引用之后再使用MyController* strongSelf = weakSelf; if (!strongSelf) { return; }那么,里面变成强引用后,不是又导致循环引用了吗?有意思的就在这里,IOS中,block内部,对弱应用的强引用,不会影响对象在外部的释放,同时,保证内部该对象也不会被...
1:在不同的controllerview之间通过对象进行传值 //传值方向 从A到B //A控制器 界面://// ViewController.h// Index// #import <UIKit/UIKit.h>#import "Person.h" @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UITextField *name;@property (weak, nonatomic) IBOutlet UITextField *sex;@property (weak, nonatomic) IBOutlet UITextField *age; @end //// ViewController.m//...
// 将字典或者数组转化为JSON串- (NSData *)toJSONData:(id)theData{ NSError *error = nil; NSData *jsonData = [NSJSONSerialization
dataWithJSONObject:theData
options:NSJSONWritingPrettyPrinted
error:&error]; if ([jsonData length] != 0 &&
error == nil) { return jsonData...
之前有写过一个color对象转16进制的,后来在项目中发现调整亮度,还是需要获取当前颜色的存储值。。一个是当前设备的颜色,一个是颜色拾取图上的颜色,存下来后转为color对象再分解成饱和度,亮度等等……下面奉上16进制转color对象的方法 1//把16进制转为UIcolor对象的代码 2 - (UIColor *) colorWithHexString: (NSString *) stringToConvert3{4 NSString *cString = [[stringToConvert stringByTrimmingCharactersInSet:[N...
nything Is Object,万物皆对象,对象就是类在内存中的一个实例,属性@property属性概念oc语言有,c语言里没有self 调用的是当前对象的方法,对象方法用实例出来的对象名调类中访问属性是点,访问方法用空格。基础性数据类型比如,int,float,double等,他们在声明负值时,在栈内存中存放。全局变量没初始化默认是0和nil,局部变量没初始化默认是随机的一个类的方法可以没有声明只有实现,但不能只有声明,如果自由声明就会报错,...
概述前面已经简单介绍过ObjC的基础知识,让大家对ObjC有个大致的印象,今天将重点解释ObjC面向对象的特性。ObjC相对于C语言多了面向对象特性,但是ObjC又没有其他面向对象语言那么多语法特性,ObjC本身对面向对象进行了精简。当然这并不代表今天的内容就会少,今天的内容还是相当多的:类定义成员变量方法和属性self关键字构造方法description方法继承类定义在C#、Java等其他高级语言中定义一个类是相当简单点的,直接一个关键字cl...
一. Object-C 方法详解1. 方法属性(1) OC 方法传参机制Object-C 方法传参机制 : OC 中得参数传递都是值传递, 传入参数的是参数的副本; -- 基本类型 (值传递) : int 等基本类型直接传入 这些基本类型的的副本;-- 指针类型 (地址传递) : 使用指针变量作为参数, 传递的也是指针变量的副本, 但是这个副本本身的值是一个地址, 地址 变量 和 地址 变量的副本 还是指向同一个地址;(2) OC 方法 与 传统函数方法 与 传统函数 : -- 结构化编程...
最终效果图:核心代码:NSObject+Dict.h//
// NSObject+Dict.h
// 帅哥_团购
//
// Created by beyond on 14-8-14.
// Copyright (c) 2014年 com.beyond. All rights reserved.
// 使用运行时,将dict转成对象#import <Foundation/Foundation.h>@interface NSObject (Dict)// 一个对象,调用此方法,参数 传递一个字典,便可以通过运行时,自动将字典中所有的值V,赋值到对象对应的成员属性上面去
- (void)setValuesWithDict:(NSDicti...
IOS开发之类和对象OC和Java一样都是一种面向对象的语言,从今天開始我和大家一起来系统学习这样的面向对象的语言oc,欢迎大家什么问题和我一起探讨和学习。OC定义类有两个步骤:1、接口部分(通俗的说是.h文件)2、实现部分(通俗的说是.m文件)接口部分语法例如以下: #interface:Myclass:NSObject { int _count; NSString* _name; -(id)initwithString:(NSString*)Name; +(Myclass*...
1. 属性在开发过程中经常要用到定义属性,@property和@synthesize是经常用到的属性, property在.h文件中作声明,@synthesize在.m文件中用于实现
// Student.h
// property
//// Created by Rio.King on 13-8-25.
// Copyright (c) 2013年 Rio.King. All rights reserved.
//#import <Foundation/Foundation.h>@interface Student : NSObject
{int age;int no;
}//当编译器遇到@property时,会自动展开成getter和setter的声明
@p...
//
// main.m
// 多个对象的内存管理
//
// Created by admin on 15/8/5.
// Copyright (c) 2015年 admin. All rights reserved.
//
#import <Foundation/Foundation.h>
// 人拥有一辆汽车
#import "Person.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
// 1
Person * p = [[Person alloc] init];
// 1
Car * car = [[Car alloc] init];
...
最近小编在做一个会议室预定的功能,这个功能就像在买电影票时选择座位一样,看看会议室的哪个时间段空闲,有什么设备等等。由于我做的是APP,APP既要兼容Android,又要兼容IOS,刚开始的开发与调试我都是用谷歌浏览器干的,我没有用其它浏览器进行测试,谁知道最后遗留一个很大的隐患。下面是我的界面。 问题一: 这个界面运用了大量的日期类型的计算,当我们用JavaScript实例化一个日期对象时,我们可以这样用:var date =new Dat...