引用唐巧的文章-使用 Git 管理代码片段
使用 Git 管理代码片段
在了解了 code snippet 之后,我在想能不能用 Git 来管理它,于是就研究了一下,发现它都存放于目录 ~/Library/Developer/Xcode/UserData/CodeSnippets 中。于是,我就将这个目录设置成一个 Git 的版本库,然后将自己整理
的代码片段都放到 Github 上了。现在我有 2 台 mac 机器,一台笔记本,一台公司的 iMac,我常常在 2 台机器间切换着工作,由于将代码片段都放在 github 上,所以我在任何一端有更新,另一端都可以很方便的用 git pull 将更新拉到本地。前两天将公司机器升级到 lion,又重装了 lion 版的 xcode,简单设置一下,所有代码片段都回来了,非常方便。
我的代码片段所在的 github 地址是 https://github.com/tangqiaoboy/xcode_tool, 使用它非常方便,只需要如下 3 步即可:
git clone https://github.com/tangqiaoboy/xcode_tool
cd xcode_tool
./setup_snippets.sh
大家也可以将我的 github 项目 fork 一份,改成自己的。这样可以方便地增加和管理自己的代码片段。
1.属性Strong(pps)
@property (nonatomic, strong) <#Type#> *<#name#>;
@property (nonatomic, weak) <#Type#> *<#name#>;
@property (nonatomic, assign) <#Type#> *<#name#>;
2.创建Window(windowinit)
self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
self.window.rootViewController = [[<#type#> alloc]init];
[self.window makeKeyAndVisible];
3.初始化tableview(tableinit)
#pragma mark -
#pragma mark - UITableViewDataSource
// 分区数量
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
// Cell数量
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 10;
}
// Cell样式
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString* const reuseIdentifier = @"reuseIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifier];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:(UITableViewCellStyleDefault) reuseIdentifier:reuseIdentifier];
}
return cell;
}
#pragma mark -
#pragma mark - UITableViewDelegate
// Cell选中事件
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
}
// Cell高度
- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return 44;
}
// SectionHeader高度
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return FLT_MIN;
}
// SectionFooter高度
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return FLT_MIN;
}
// SectionHeaderView
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
return [UIView new];
}
// SectionFooterView
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
return [UIView new];
}
#pragma mark -
#pragma mark - Getter
- (UITableView *)tableView {
if (!_tableView) {
_tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:(UITableViewStylePlain)];
_tableView.delegate = self;
_tableView.dataSource = self;
_tableView.dataSource = self;
_tableView.delegate = self;
_tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
_tableView.tableFooterView = [UIView new];
_tableView.tableHeaderView = [UIView new];
_tableView.estimatedRowHeight = 200;
_tableView.rowHeight = UITableViewAutomaticDimension;
}
return _tableView;
}
4.tableViewCell(tcellinit)
+(instancetype)cellWithTableView:(UITableView *)tableView {
static NSString* const <#cellIdentifier#> = @"<#cellIDStr#>";
[tableView registerNib:[UINib nibWithNibName:@"<#nibName#>" bundle:nil] forCellReuseIdentifier:<#cellIdentifier#>];
<#nibName#> *cell = [tableView dequeueReusableCellWithIdentifier:<#cellIdentifier#>];
if (!cell) {
cell = [[<#nibName#> alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:<#cellIdentifier#>];
}
cell.selectionStyle = UITableViewCellSelectionStyleNone;
return cell;
}