「Template」の編集履歴(バックアップ)一覧はこちら
Template - (2016/07/19 (火) 13:09:29) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
ViewController *__weak weakSelf = self;
typeof(self) __weak wself = self;
__weak typeof(self) wself = self;
SomeClass *obj = [[SomeClass] alloc] init];
SomeClass *obj = [SomeClass new];
SomeClass *obj = SompeClass.new;
NSDictionary* dict = @{}
NSMutableDictionary* dict = @{}.mutableCopy;
NSArray* array = @[]
NSMutableArray* array = @[].mutableCopy;
+ (instancetype)sharedInstance
{
SomeClass* obj = [[self alloc] init];
:
:
}
SomeClass* obj = self.new;
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
Delegate
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
<protocol>
@protocol ClassNameDelegate <NSObject>
@optional
/**
* xxxxxxxxxxxxxxxx
* @param 無し
* @return 無し
*/
- (void)dismissSampleView;
/**
* xxxxxxxxxxxxxxxx
* @param sampleView SampleView インスタンス
* @param info SampleView から通知したい情報
* @return 無し
* デリゲートメソッドの命名として、引数が2つ以上ある場合は、第1引数に自身のインスタンス(今回はSampleViewControllerインスタンス)を渡す慣習があります。
*/
- (void)sampleView:(SampleView *)sampleView willDismissWithInfo:(NSDictionary *)info;
@end
<property>
@property (weak, nonatomic) id <ClassNameDelegate> delegate;
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
Multi Thread
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
ViewController *__weak weakSelf = self;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
@synchronized(self) {
}
dispatch_async(dispatch_get_main_queue(), ^{
});
});
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
遅延
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#include <dispatch/dispatch.h>
ViewController *__weak weakSelf = self;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 0.3f * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void) {
});
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
サンプルアプリ作成用
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#import "ViewController.h"
ViewController *viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
self.window.rootViewController = viewController;
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
typedef
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
typedef NS_OPTIONS(NSUInteger, UIXxxxxYyyyyZzzzz) {
UIXxxxxYyyyyZzzzz00000 = 0, // 00000
UIXxxxxYyyyyZzzzz11111 = 1 << 0, // 11111
UIXxxxxYyyyyZzzzz22222 = 1 << 1, // 22222
UIXxxxxYyyyyZzzzz33333 = 1 << 2, // 33333
UIXxxxxYyyyyZzzzz44444 = 0x00FF0000, // 44444
UIXxxxxYyyyyZzzzzReserved = 0xFF000000 // 予約(未使用)
};
typedef NS_ENUM(NSInteger, XxxxxYyyyyZzzzzType) {
XxxxxYyyyyZzzzzType0 = 0,
XxxxxYyyyyZzzzzType1,
XxxxxYyyyyZzzzzType2,
XxxxxYyyyyZzzzzTypeReserved // 予約(未使用)
};
/**
* グラデーションを設定する。
* @param view 設定対象UIView
* @return 無し
*/
- (void)setGradientLayer:(UIView *)view
{
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = view.bounds;
gradient.colors = @[
(id)[UIColor colorWithRed:0.90f green:0.91f blue:0.92f alpha:1.0f].CGColor,
(id)[UIColor colorWithRed:0.84f green:0.85f blue:0.86f alpha:1.0f].CGColor
];
[view.layer insertSublayer:gradient atIndex:0];
}
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
UITableView
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
.h
----------
@property (strong, nonatomic) NSMutableArray *tableItems;
.m viewDidLoad
-----------
- (void)viewDidLoad
{
// ノーマルの場合
NSString *className = NSStringFromClass([UITableViewCell class]);
[_tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:className];
// nib(カスタマイズ)の場合
NSString *className = NSStringFromClass([CustomTableViewCell class]);
[_tableView registerNib:[UINib nibWithNibName:className bundle:nil] forCellReuseIdentifier:className];
}
.m UITableViewDelegate
-----------
#pragma mark - UITableViewDataSource
/**
* セクション数を返す
* @param tableView UITableViewインスタンス
* @return セクション数
*/
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
/**
* セクションの要素数を返す
* @param tableView UITableViewインスタンス
* @param section セクション
* @return 要素数
*/
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [_tableItems count];
}
/**
* セルの高さを返す
* @param tableView UITableViewインスタンス
* @param indexPath NSIndexPathインスタンス
* @return 無し
*/
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 44;
}
/**
* セルを返す
* @param tableView UITableViewインスタンス
* @param indexPath NSIndexPathインスタンス
* @return セルインスンタス
*/
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *className = NSStringFromClass([UITableViewCell class]);
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:className
forIndexPath:indexPath];
cell.textLabel.font = [UIFont systemFontOfSize:18];
cell.textLabel.minimumScaleFactor = 9.f/18.f;
cell.textLabel.adjustsFontSizeToFitWidth = YES;
cell.textLabel.text = _tableItems[indexPath.row];
return cell;
}
#pragma mark - UITableViewDelegate
/**
* セルを選択すると呼ばれる
* @param tableView UITableViewインスタンス
* @param indexPath NSIndexPathインスタンス
* @return 無し
*/
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
}
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
UICollectionView
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
.h
-----------------------------------------------------------------------------
@property (strong, nonatomic) NSMutableArray *collectionItems;
.m viewdidload
-----------------------------------------------------------------------------
NSString *className = NSStringFromClass([CustomCollectionViewCell class]);
[_collectionView registerNib:[UINib nibWithNibName:className bundle:nil] forCellWithReuseIdentifier:className];
.m delegate
-----------------------------------------------------------------------------
#pragma mark - UICollectionViewDataSource
/**
* セクション数を返す
* @param collectionView 対象UICollectionView
* @return セクション数
*/
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
return 1;
}
/**
* 要素数を返す
* @param collectionView 対象UICollectionView
* @return 要素数
*/
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return [_collectionItems count];
}
/**
* 表示対象セルを返す
* @param collectionView 対象UICollectionView
* @param indexPath インデックス情報
* @return 表示対象セル
*/
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView
cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
NSString *className = NSStringFromClass([ImageViewCell class]);
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:className
forIndexPath:indexPath];
NSDictionary *data = _collectionItems[indexPath.row];
[cell setData:data];
return cell;
}
#pragma mark - UICollectionViewDelegate
/**
* セル選択時に呼ばれる
* @param collectionView 対象UICollectionView
* @param indexPath インデックス情報
* @return 無し
*/
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
}
ViewController *__weak weakSelf = self;
typeof(self) __weak wself = self;
__weak typeof(self) wself = self;
SomeClass *obj = [[SomeClass] alloc] init];
SomeClass *obj = [SomeClass new];
SomeClass *obj = SompeClass.new;
NSDictionary* dict = @{}
NSMutableDictionary* dict = @{}.mutableCopy;
NSArray* array = @[]
NSMutableArray* array = @[].mutableCopy;
+ (instancetype)sharedInstance
{
SomeClass* obj = [[self alloc] init];
:
:
}
SomeClass* obj = self.new;
.h
extern const NSInteger BLGClassAIntegerConstant;
extern NSString *const BLGClassAStringConstant;
.m
const NSInteger BLGClassAIntegerConstant = 3;
NSString *const BLGClassAStringConstant = @"hogePublic";
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
Delegate
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
<protocol>
@protocol ClassNameDelegate <NSObject>
@optional
/**
* xxxxxxxxxxxxxxxx
* @param 無し
* @return 無し
*/
- (void)dismissSampleView;
/**
* xxxxxxxxxxxxxxxx
* @param sampleView SampleView インスタンス
* @param info SampleView から通知したい情報
* @return 無し
* デリゲートメソッドの命名として、引数が2つ以上ある場合は、第1引数に自身のインスタンス(今回はSampleViewControllerインスタンス)を渡す慣習があります。
*/
- (void)sampleView:(SampleView *)sampleView willDismissWithInfo:(NSDictionary *)info;
@end
<property>
@property (weak, nonatomic) id <ClassNameDelegate> delegate;
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
Multi Thread
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
ViewController *__weak weakSelf = self;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
@synchronized(self) {
}
dispatch_async(dispatch_get_main_queue(), ^{
});
});
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
遅延
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#include <dispatch/dispatch.h>
ViewController *__weak weakSelf = self;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 0.3f * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void) {
});
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
サンプルアプリ作成用
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#import "ViewController.h"
ViewController *viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
self.window.rootViewController = viewController;
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
typedef
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
typedef NS_OPTIONS(NSUInteger, UIXxxxxYyyyyZzzzz) {
UIXxxxxYyyyyZzzzz00000 = 0, // 00000
UIXxxxxYyyyyZzzzz11111 = 1 << 0, // 11111
UIXxxxxYyyyyZzzzz22222 = 1 << 1, // 22222
UIXxxxxYyyyyZzzzz33333 = 1 << 2, // 33333
UIXxxxxYyyyyZzzzz44444 = 0x00FF0000, // 44444
UIXxxxxYyyyyZzzzzReserved = 0xFF000000 // 予約(未使用)
};
typedef NS_ENUM(NSInteger, XxxxxYyyyyZzzzzType) {
XxxxxYyyyyZzzzzType0 = 0,
XxxxxYyyyyZzzzzType1,
XxxxxYyyyyZzzzzType2,
XxxxxYyyyyZzzzzTypeReserved // 予約(未使用)
};
/**
* グラデーションを設定する。
* @param view 設定対象UIView
* @return 無し
*/
- (void)setGradientLayer:(UIView *)view
{
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = view.bounds;
gradient.colors = @[
(id)[UIColor colorWithRed:0.90f green:0.91f blue:0.92f alpha:1.0f].CGColor,
(id)[UIColor colorWithRed:0.84f green:0.85f blue:0.86f alpha:1.0f].CGColor
];
[view.layer insertSublayer:gradient atIndex:0];
}
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
UITableView
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
.h
----------
@property (strong, nonatomic) NSMutableArray *tableItems;
.m viewDidLoad
-----------
- (void)viewDidLoad
{
// ノーマルの場合
NSString *className = NSStringFromClass([UITableViewCell class]);
[_tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:className];
// nib(カスタマイズ)の場合
NSString *className = NSStringFromClass([CustomTableViewCell class]);
[_tableView registerNib:[UINib nibWithNibName:className bundle:nil] forCellReuseIdentifier:className];
}
.m UITableViewDelegate
-----------
#pragma mark - UITableViewDataSource
/**
* セクション数を返す
* @param tableView UITableViewインスタンス
* @return セクション数
*/
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
/**
* セクションの要素数を返す
* @param tableView UITableViewインスタンス
* @param section セクション
* @return 要素数
*/
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [_tableItems count];
}
/**
* セルの高さを返す
* @param tableView UITableViewインスタンス
* @param indexPath NSIndexPathインスタンス
* @return 無し
*/
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 44;
}
/**
* セルを返す
* @param tableView UITableViewインスタンス
* @param indexPath NSIndexPathインスタンス
* @return セルインスンタス
*/
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *className = NSStringFromClass([UITableViewCell class]);
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:className
forIndexPath:indexPath];
cell.textLabel.font = [UIFont systemFontOfSize:18];
cell.textLabel.minimumScaleFactor = 9.f/18.f;
cell.textLabel.adjustsFontSizeToFitWidth = YES;
cell.textLabel.text = _tableItems[indexPath.row];
return cell;
}
#pragma mark - UITableViewDelegate
/**
* セルを選択すると呼ばれる
* @param tableView UITableViewインスタンス
* @param indexPath NSIndexPathインスタンス
* @return 無し
*/
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
}
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
UICollectionView
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
.h
-----------------------------------------------------------------------------
@property (strong, nonatomic) NSMutableArray *collectionItems;
.m viewdidload
-----------------------------------------------------------------------------
NSString *className = NSStringFromClass([CustomCollectionViewCell class]);
[_collectionView registerNib:[UINib nibWithNibName:className bundle:nil] forCellWithReuseIdentifier:className];
.m delegate
-----------------------------------------------------------------------------
#pragma mark - UICollectionViewDataSource
/**
* セクション数を返す
* @param collectionView 対象UICollectionView
* @return セクション数
*/
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
return 1;
}
/**
* 要素数を返す
* @param collectionView 対象UICollectionView
* @return 要素数
*/
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return [_collectionItems count];
}
/**
* 表示対象セルを返す
* @param collectionView 対象UICollectionView
* @param indexPath インデックス情報
* @return 表示対象セル
*/
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView
cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
NSString *className = NSStringFromClass([ImageViewCell class]);
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:className
forIndexPath:indexPath];
NSDictionary *data = _collectionItems[indexPath.row];
[cell setData:data];
return cell;
}
#pragma mark - UICollectionViewDelegate
/**
* セル選択時に呼ばれる
* @param collectionView 対象UICollectionView
* @param indexPath インデックス情報
* @return 無し
*/
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
}