Navigation
阅读进度0%
C语言与Objective-C基础学习笔记
June 17, 2025 (7mo ago)
C
Objective-C
Memory Management
Hello word程序
# 学习
## 第二部分 C语言基础
### 变量和类型
>
> **与某块数据的联系**
变量和类型, 几种c语言中的数据类型,同一类的不同存储形式的 类型转换(float -> double)
条件表达式 和运算符 > < == != && || ! (三元运算)
关于画括号 {}
### function
>
> **与某块代码块的联系**
>
参数 形参 实参 标准库 局部作用域 堆栈帧, 递归 , 全局变量 静态变量,
### 格式化字符串 %d %f 都在这里哈
字符串存储, printf 函数, %s %d %f 的含义
### 关于Number
整数 浮点数(单精度, 双精度)
### 关于循环♻️
### 关于内存 地址和指针
& 变量的内存地址 十六进制,指针* 去引用,某个特定类型的数据占了多少字节?, 空指针 (nil = NULL )
### 引用传递
传递引用直接用 &声明参数类型, 既得要对NULL 做判断要不然 会引发 空指针异常
### 结构
结构 struct 成员, typedef简化 C 标准库中的 struct tm, <time.h> 时间标准库
### 堆栈
自动变量, 缓冲区 连续内存 连续内存中的指针操作 运算符-> 释放内存
### 突然间发现 一家好的出版社
>
> 最近在复习和阅读 OC 编程 和 学习Android编程,发现了一个非常厉害的 出版社,,我就看了一部分 真的非常给力**还是我读的书少了🔥!**
>
## 第三部分OC
### 对象
实例变量 方法 和 类 UML图的画法, 消息发送,OC语言的 命名习惯, 向消息传递参数,类的alloc 和 init , 便利方法,向nil 发消息。id ,any的定义
### 对象和内存
指针 和指针指向的对象是不同的两个东西,堆内存管理和ARC、
### NSString
初始化它,-+实例防范和类方法, NSString常用的防方法,参考手册如何查
### NSArray
NSArray ,它是一个不可改变的Array, options 快捷键的使用, 遍历它(for/快速枚举), NSMutableArray, 一些历史遗留下来的语法
### 第一个自定义类
头文件和实现文件cocoa 类,NSObject 子类, 命名规范, 快捷键, 尖括号和双引号的区别,类图的画法,存取方法(getter setter) self(this),多个实现文件和资源(别让实现的第三方库), namespace类前缀,
## 重新审视 Expo
>
> 最近项目 没什么事情 可以做, 我去重新审视了一下 Expo 这个开发工具
> 还是很有东西的,它们的SDK 集成了非常的常用功能,不需要开发者 使用RN 自己去集成各种各样的鬼lib,对于小公司 简直是完美选项!没有之一
//
// main.m
// OC_NSString_NSArray
//
// Created by administrator on 2023/8/29.
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
/**
NSString *st1 = @"This is st1";
NSLog(@"St1: %@", st1);
NSDate *now = [[NSDate alloc] init];
NSString *st2 = [NSString stringWithFormat: @"The Time is %@", now];
NSLog(@"St2 %@",st2);
// 常见方法举例
//st1.length
//BOOL *isEq = [st1 isEqualToString:@"2"];
//*st1 = [st1 uppercaseString];
NSString *search = @"IS";
NSRange rang = [st1 rangeOfString: search options:NSCaseInsensitiveSearch];
if(rang.location != NSNotFound){
NSLog(@"Fund %lu",(unsigned long)rang.location);
}
*/
/**
NSDate *now = [NSDate date];
NSDate *tm = [now dateByAddingTimeInterval:24.0 * 60.0 * 60.0];
NSDate *yd = [now dateByAddingTimeInterval:-24.0 * 60.0 * 60.0];
NSArray *datelist = @[now, tm, yd];
NSLog(@"The f date %@", datelist[0]);
NSLog(@"The s date %@", datelist[1]);
NSLog(@"This lenght %lu", [datelist count]);
// 遍历
for (NSDate *d in datelist) {
NSLog(@"Here is a date: %@", d);
}
// 可变的Array
NSMutableArray *dateM = [NSMutableArray array];
[dateM addObject:now];
[dateM addObject:tm];
for (NSDate *d in dateM) {
NSLog(@"Here is a date: %@", d);
}
[dateM removeObjectAtIndex:0];
NSLog(@"lenght %lu",[dateM count]);
*/
NSString *nameString = [NSString stringWithContentsOfFile:@"/usr/share/dict/propernames" encoding:NSUTF8StringEncoding error:nil];
NSString *wordString = [NSString stringWithContentsOfFile:@"/usr/share/dict/words" encoding:NSUTF8StringEncoding error:nil];
NSArray *nameArray = [nameString componentsSeparatedByString:@"\n"];
NSArray *wordArray = [wordString componentsSeparatedByString:@"\n"];
for(NSString *name in nameArray){
for(NSString *word in wordArray){
NSComparisonResult res = [name caseInsensitiveCompare:@"Wolf"];
if(res == NSOrderedSame){
NSLog(@"See name %@, word %@",name,word);
}
}
}
}
return 0;
}
//
// BNRPerson.m
// CusObject
//
// Created by administrator on 2023/8/29.
//
#import "BNRPerson.h"
@implementation BNRPerson
- (float)getH
{
return _h;
}
- (void)setH: (float)h
{
_h = h;
}
- (int)getW
{
return _w;
}
- (void)setW:(int)w
{
_w =w;
}
- (float)bodyMassIndex
{
return [self getW] / [self getH] * [self getH];
}
@end
//
// BNRPerson.h
// CusObject
//
// Created by administrator on 2023/8/29.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface BNRPerson : NSObject
// 实例变量
{
float _h;
int _w;
}
// 实例方法
- (float) getH;
- (void) setH:(float)h;
- (int) getW;
- (void) setW:(int)w;
- (float) bodyMassIndex;
@end
NS_ASSUME_NONNULL_END
//
// main.m
// CusObject
//
// Created by administrator on 2023/8/29.
//
#import <Foundation/Foundation.h>
#import "BNRPerson.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
BNRPerson *mky = [[BNRPerson alloc]init];
[mky setH:1.8];
[mky setW:96];
NSLog(@"H -> %.2f", [mky getH]);
NSLog(@"bmi ->%f", [mky bodyMassIndex]);
}
return 0;
}