<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[S9700的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/S9700</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; S9700]]></copyright><item><title><![CDATA[黑马程序员--OC学习笔记之代理模式的简单分析]]></title><link>https://blog.youkuaiyun.com/S9700/article/details/46726429</link><guid>https://blog.youkuaiyun.com/S9700/article/details/46726429</guid><author>S9700</author><pubDate>Thu, 02 Jul 2015 14:39:21 +0800</pubDate><description><![CDATA[代理模式概念
       传入的对象，代替当前类完成了某个功能，称为代理模式。代理模式是在oc中经常遇到的一种设计模式，那什么叫做代理模式呢？
 举个例子：有一个婴儿，他本身不会自己吃饭和洗澡等等一些事情，于是婴儿就请了一个保姆，于是婴儿和保姆之间商定了一个协议，协议中写明了保姆需要做什么事情， 而保姆就是这个代理人，  即：婴儿和保姆之间有个协议，保姆继承该协议，于是保姆就需要实现该协议中]]></description><category></category></item><item><title><![CDATA[黑马程序员--有关OC内存管路set方法的思考]]></title><link>https://blog.youkuaiyun.com/S9700/article/details/46716687</link><guid>https://blog.youkuaiyun.com/S9700/article/details/46716687</guid><author>S9700</author><pubDate>Wed, 01 Jul 2015 23:11:49 +0800</pubDate><description><![CDATA[基本数据类型不需要内存管理，管理的是对象类型
分析：
   int main()
        {
                Person *p = [[Person
 alloc] init];  //p->1
                p.age = 20;
                
                Car *c1 = [[Car
 al]]></description><category></category></item><item><title><![CDATA[黑马程序员--OC内存管理之循环retain问题]]></title><link>https://blog.youkuaiyun.com/S9700/article/details/46716647</link><guid>https://blog.youkuaiyun.com/S9700/article/details/46716647</guid><author>S9700</author><pubDate>Wed, 01 Jul 2015 23:09:09 +0800</pubDate><description><![CDATA[请看如下代码：
Dog.h
     #import 
     @class Person;   //声明一个Person类，仅仅是一个声明
     @interface Dog : NSObject
     @property(nonatomic, retain) Person *owner;   //拥有owner属性
     @end 


Person.h
  ]]></description><category></category></item><item><title><![CDATA[黑马程序员--c语言动态内存分配]]></title><link>https://blog.youkuaiyun.com/S9700/article/details/46660625</link><guid>https://blog.youkuaiyun.com/S9700/article/details/46660625</guid><author>S9700</author><pubDate>Sat, 27 Jun 2015 13:05:45 +0800</pubDate><description><![CDATA[动态内存分配  （malloc）
函数原型：
      void *malloc (size_t size)
         size_t是无符号的长整形  
         动态内存在堆段 
         返回值void*表示泛型指针，可以赋给任意一个类型的指针变量


         函数类型存储在栈段
 
eg：
    char *p = malloc(1]]></description><category></category></item><item><title><![CDATA[黑马程序员--c语言函数]]></title><link>https://blog.youkuaiyun.com/S9700/article/details/46654457</link><guid>https://blog.youkuaiyun.com/S9700/article/details/46654457</guid><author>S9700</author><pubDate>Fri, 26 Jun 2015 21:55:06 +0800</pubDate><description><![CDATA[函数：
什么情况下定义函数:
添加一个常用的新功能
函数的定义格式：
返回值类型  函数名（形式参数列表）
{
函数体
}

定义函数需要明确的东西：
起一个有意义的函数名

函数体内部不能定义和形参一样的变量

1.形式参数；定义函数时函数名后面中的参数，简称形参
2.实际参数: 调用函数式传入的具体数据，简称形参
3.实参个数必须等于形参个数
4.函数体内部不]]></description><category></category></item><item><title><![CDATA[黑马程序员--流程控制]]></title><link>https://blog.youkuaiyun.com/S9700/article/details/46654343</link><guid>https://blog.youkuaiyun.com/S9700/article/details/46654343</guid><author>S9700</author><pubDate>Fri, 26 Jun 2015 21:37:44 +0800</pubDate><description><![CDATA[流程控制： 
顺序结构
选择结构
1.if的第一种结构：
if（条件）
{
语句；
}
2.if的第二句语句
if（）
{
语句； 
}
else
{
语句；
}

3.if的第三种结构
if（）
{
}
else if（）
{ 
}
else if ()
{
}
else
{
}

4.if的第四种语句
if（）
语句1；
语]]></description><category></category></item><item><title><![CDATA[黑马程序员--c语言各种运算]]></title><link>https://blog.youkuaiyun.com/S9700/article/details/46654325</link><guid>https://blog.youkuaiyun.com/S9700/article/details/46654325</guid><author>S9700</author><pubDate>Fri, 26 Jun 2015 21:36:09 +0800</pubDate><description><![CDATA[算术运算：
c一共有34个运算符，包括了常见的加减乘徐运算
+ (还可以表示正号)
-（还可以表示负号）  
*
/（整数除以整数，还是整数，1/2的值是0）
%（取余运算或模运算，两边必须都是整数，-10%3=-1，,10%-3=1，%结果的正负性只和%左边被除数正负有关）

int a = 10.8；//自动类型转换（double->int）,会产生警告
int b = （i]]></description><category></category></item><item><title><![CDATA[黑马程序员--枚举类型和结构体]]></title><link>https://blog.youkuaiyun.com/S9700/article/details/46654157</link><guid>https://blog.youkuaiyun.com/S9700/article/details/46654157</guid><author>S9700</author><pubDate>Fri, 26 Jun 2015 21:15:01 +0800</pubDate><description><![CDATA[枚举类型：
场合：固定取值，方便交流，比如性别设置1为男性，不好识别
1.定义枚举类型：
enum Season
{
spring, // 0 整形可以改值  spring = 1，其他依次递增
summer，//1
autumn，//2
winter//3
};
2.定义枚举变量
enum Season s = summer；

enum Sex {Man, Woman]]></description><category></category></item><item><title><![CDATA[黑马程序员--预处理3中指令]]></title><link>https://blog.youkuaiyun.com/S9700/article/details/46653991</link><guid>https://blog.youkuaiyun.com/S9700/article/details/46653991</guid><author>S9700</author><pubDate>Fri, 26 Jun 2015 20:53:33 +0800</pubDate><description><![CDATA[预处理指令分3种：
1>宏定义
2>条件编译
3>文件包含

预处理指令在代码翻译成0 1之前执行
预处理的位置是随便写的
预处理指令的作用域：从编写指令的那一行开始一直到文件结尾

# undef COUNT // 从这行开始，COUNT这个宏失效
宏名一般用大写或者以k开头，变量名一般用小写

带参数的宏定义:
宏定义只会替换代码
# define 
# defi]]></description><category></category></item><item><title><![CDATA[黑马程序员--c语言指向函数的指针]]></title><link>https://blog.youkuaiyun.com/S9700/article/details/46653927</link><guid>https://blog.youkuaiyun.com/S9700/article/details/46653927</guid><author>S9700</author><pubDate>Fri, 26 Jun 2015 20:47:38 +0800</pubDate><description><![CDATA[指向函数的指针:
void test()
{
printf("调用了test函数");
}


int main()
{

void (*p)(); //（*p）是固定写法，表指针变量p肯定是指向函数
//左边的void：指针变量p指向的函数没有返回值
//右边的（）：指针变量p指向的函数没有形参

p = test; //指针变量p指向了test函数


p()]]></description><category></category></item><item><title><![CDATA[黑马程序员--指针与数组字符串]]></title><link>https://blog.youkuaiyun.com/S9700/article/details/46653881</link><guid>https://blog.youkuaiyun.com/S9700/article/details/46653881</guid><author>S9700</author><pubDate>Fri, 26 Jun 2015 20:43:51 +0800</pubDate><description><![CDATA[指针和数组:
int ages[5] = {1, 2, 3, 4, 
int *p;
//指针变量p指向了数组的首元素
p = &ages[0];// 数组名就是数组的首地址，也是数组首元素的地址
// 也可以写为p = ages;

p为ages[0]的地址
p+1为ages[1]的地址 
p+2为ages[2]的地址  //地址相差4个
printf("%d\n", *(p]]></description><category></category></item><item><title><![CDATA[黑马程序员--c语言指针的基本知识]]></title><link>https://blog.youkuaiyun.com/S9700/article/details/46653809</link><guid>https://blog.youkuaiyun.com/S9700/article/details/46653809</guid><author>S9700</author><pubDate>Fri, 26 Jun 2015 20:35:28 +0800</pubDate><description><![CDATA[指针类型:
int *p;  //定义了一个指针变量p，指针变量只能存储地址
//指针变量p前面的int:指针变量p只能指向int类型的数据
*p = 10; //指针能够找到对应的存储空间，并且可以修改


利用指针可以改变多个值

练习(用一个函数实现和差)：

# include
int SumAndMinus(int n1, int n2, int *n3);
in]]></description><category></category></item><item><title><![CDATA[黑马程序员--typedef关键字和结构体 枚举类型]]></title><link>https://blog.youkuaiyun.com/S9700/article/details/46653745</link><guid>https://blog.youkuaiyun.com/S9700/article/details/46653745</guid><author>S9700</author><pubDate>Fri, 26 Jun 2015 20:21:20 +0800</pubDate><description><![CDATA[typedef 关键字：
typedef int MyTnt;  //给int 提供一个别名
typedef MyInt MyInt2;
typedef (char *) String


结构体：
struct Student
{
int age;
};
typedef struct Student MyStu;

typedef struct Student 
{]]></description><category></category></item><item><title><![CDATA[黑马程序员--c语言数据类型总结]]></title><link>https://blog.youkuaiyun.com/S9700/article/details/46653697</link><guid>https://blog.youkuaiyun.com/S9700/article/details/46653697</guid><author>S9700</author><pubDate>Fri, 26 Jun 2015 20:15:34 +0800</pubDate><description><![CDATA[数据类型总结：
一.基本数据类型
int 
long int, long   8个字节  %ld
short int, short  2个字节
%d %i
unsigned int, unsigned
4个字节 %zd
signed int, signed, int
4个字节 %d %i

float\double
float   4个字节 %f
double   8个字]]></description><category></category></item><item><title><![CDATA[黑马程序员--代码块]]></title><link>https://blog.youkuaiyun.com/S9700/article/details/46653491</link><guid>https://blog.youkuaiyun.com/S9700/article/details/46653491</guid><author>S9700</author><pubDate>Fri, 26 Jun 2015 19:47:03 +0800</pubDate><description><![CDATA[代码块作用域：
从定义的哪行代码开始，直到函数结束
{
代码块   代码块只在大括 号里面起作用（运行完毕内存释放）
}

举例：
int score = 100;
{
int score = 200;
printf("%d", score);//值为200  执行完，此代码块释放
}
printf("%d", score);// 值为100


   
函数内部定]]></description><category></category></item><item><title><![CDATA[黑马程序员--c语言关键字，标示符，注释，数据，常量，变量介绍]]></title><link>https://blog.youkuaiyun.com/S9700/article/details/46653441</link><guid>https://blog.youkuaiyun.com/S9700/article/details/46653441</guid><author>S9700</author><pubDate>Fri, 26 Jun 2015 19:40:21 +0800</pubDate><description><![CDATA[关键字（保留字）
c（32个）
  特征：全部小写 比如：int return 
  
  
标识符: 比如函数名
命名规则：
只能由26个大小写，10个数字，下划线组成
严格区分大小写
不能以数字开头
不可以使用关键字做标示符
命名规范：最好起一个有意义的名字，别人一看这个名称就能识别
也可以使用拼音
 如果如果标示符包含多个单词，也可以使用驼峰表示（后面每个单词的首字]]></description><category></category></item><item><title><![CDATA[黑马程序员--extern与函数分析]]></title><link>https://blog.youkuaiyun.com/S9700/article/details/46552199</link><guid>https://blog.youkuaiyun.com/S9700/article/details/46552199</guid><author>S9700</author><pubDate>Thu, 18 Jun 2015 20:43:11 +0800</pubDate><description><![CDATA[extern与函数

先来理解2个概念：

外部函数：如果在当前文件中定义的函数允许其他文件访问、调用，就称为外部函数，c语言规定，不允许有同名的外部函数。

内部函数：如果在当前文件中定义的函数不允许其他文件访问、调用，只能在内部使用，就称为内部函数。c语言规定不同的源文件可以有同名的内部函数，并且互不干扰。

下面说明在一个源文件中调用另一个源文件的函数，比如在main.c中调]]></description><category></category></item><item><title><![CDATA[黑马程序员--ios中 property的参数]]></title><link>https://blog.youkuaiyun.com/S9700/article/details/45969207</link><guid>https://blog.youkuaiyun.com/S9700/article/details/45969207</guid><author>S9700</author><pubDate>Mon, 25 May 2015 14:17:45 +0800</pubDate><description><![CDATA[property 参数（4类，不同类型的参数可以一起写 @property (readwrite, assign) int age）：
1.内存管理相关的参数
retain：release jiu值，retain xin值，适用于非OC对象类型
assign：直接赋值（默认），适用非OC对象类型，@property (assign) int age 
copy  :release旧值，co]]></description><category></category></item><item><title><![CDATA[黑马程序员--ios内存管理]]></title><link>https://blog.youkuaiyun.com/S9700/article/details/45968753</link><guid>https://blog.youkuaiyun.com/S9700/article/details/45968753</guid><author>S9700</author><pubDate>Mon, 25 May 2015 14:14:53 +0800</pubDate><description><![CDATA[内存管理：
ARC机制，自动管理内存
传统的内存管理也要学好


基本原理：
什么是内存管理：
移动设备的内存极其有限，每个APP所能占的内存是有限制的
当APP所占用的内存较多时，系统会发出内存警告，这是得回收一些不需要使用的内存（对象，变量等）
管理范围：任何继承了NSObject的对象：对其他基本数据类型（int char）等无效


int char 等基本类型 存]]></description><category></category></item><item><title><![CDATA[黑马程序员--ios 中SEL这个数据类型简介]]></title><link>https://blog.youkuaiyun.com/S9700/article/details/45968547</link><guid>https://blog.youkuaiyun.com/S9700/article/details/45968547</guid><author>S9700</author><pubDate>Mon, 25 May 2015 13:24:57 +0800</pubDate><description><![CDATA[运行 [p test]; //1.首先把test包装成SEL类型的数据，在去类中找相对应的SEL（Person这个类：SE地址L s1 == test）
           //2.根据SEL数据找到对应的方法地址
           //3.根据方法地址调用对应的方法

间接调用test方法：
[p performSelector:@selector(test2)];// 传入SE]]></description><category></category></item></channel></rss>