iOS系統(tǒng)API筆記


實(shí)時(shí)搜索發(fā)送請(qǐng)求

防止輸入文字過(guò)快頻繁請(qǐng)求服務(wù)器丰捷,也可以用RAC 的throttle節(jié)流器控制

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
    
    [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(requestSearch:) object:nil];
    [self performSelector:@selector(requestSearch:) withObject:searchText afterDelay:0.3];
    
}

實(shí)時(shí)監(jiān)聽(tīng)textField輸入中文內(nèi)容的時(shí)候拼音岗屏,拼音不跟著響應(yīng)

- (void)textFieldDidChange:(UITextField *)textField{
    if (textField.markedTextRange == nil) {
        NSLog(@"text:%@", textField.text);
    }
}

運(yùn)行時(shí)加載類名

// 獲取所有加載的Objective-C框架和動(dòng)態(tài)庫(kù)的名稱
const char ** objc_copyImageNames ( unsigned int *outCount );

// 獲取指定類所在動(dòng)態(tài)庫(kù)
const char * class_getImageName ( Class cls );

// 獲取指定庫(kù)或框架中所有類的類名
const char ** objc_copyClassNamesForImage ( const char *image, unsigned int *outCount );

NSLog(@"獲取指定類所在動(dòng)態(tài)庫(kù)");

NSLog(@"UIView's Framework: %s", class_getImageName(NSClassFromString(@"UIView")));

NSLog(@"獲取指定庫(kù)或框架中所有類的類名");
const char ** classes = objc_copyClassNamesForImage(class_getImageName(NSClassFromString(@"UIView")), &outCount);
for (int i = 0; i < outCount; i++) {
    NSLog(@"class name: %s", classes[i]);
}

unsigned int count;
const char **classes;
Dl_info info;

查找本工程里所有vc

dladdr(&_mh_execute_header, &info);
classes = objc_copyClassNamesForImage(info.dli_fname, &count);

NSMutableArray *vcs = [NSMutableArray new];
for (int i = 0; i < count; i++) {
    NSLog(@"Class name: %s", classes[i]);
    NSString *className = [NSString stringWithCString:classes[i] encoding:NSUTF8StringEncoding];
    Class class = NSClassFromString (className);
    if ([class isSubclassOfClass:[UIViewController class]]) {
        [vcs addObject:className];
    }
}

注冊(cè) RunLoop監(jiān)聽(tīng)事件

注冊(cè) RunLoopObserver 可以觀測(cè)當(dāng)前 RunLoop 的運(yùn)行狀態(tài)古涧,并在狀態(tài)機(jī)切換時(shí)收到通知:

  1. RunLoop開(kāi)始
  2. RunLoop即將處理Timer
  3. RunLoop即將處理Source
  4. RunLoop即將進(jìn)入休眠狀態(tài)
  5. RunLoop即將從休眠狀態(tài)被事件喚醒
  6. RunLoop退出

當(dāng)這一次 RunLoop 迭代處理完成了所有事件灰追,馬上要休眠時(shí)
使用 CF 的帶 block 版本的注冊(cè)函數(shù)可以讓代碼更簡(jiǎn)潔
在其中的 TODO 位置递览,就可以開(kāi)始任務(wù)的收集和分發(fā)了,當(dāng)然慕嚷,不能忘記適時(shí)的移除這個(gè) observer

CFRunLoopRef runLoop = CFRunLoopGetCurrent();
CFStringRef runLoopMode = kCFRunLoopDefaultMode;
CFRunLoopObserverRef observer = CFRunLoopObserverCreateWithHandler
(kCFAllocatorDefault, kCFRunLoopBeforeWaiting, true, 0, ^(CFRunLoopObserverRef observer, CFRunLoopActivity _) {
    // TODO here
});
CFRunLoopAddObserver(runLoop, observer, runLoopMode);

利用CFRunLoopMode的特性哥牍,可以將圖片的加載放到NSDefaultRunLoopMode的mode里毕泌,這樣在滾動(dòng)UITrackingRunLoopMode這個(gè)mode時(shí)不會(huì)被加載而影響到喝检。


如何判斷網(wǎng)絡(luò)請(qǐng)求是否開(kāi)啟了代理嗅辣,防charles抓包

- (BOOL)getProxyStatus {
    NSDictionary *proxySettings =  (__bridge NSDictionary *)(CFNetworkCopySystemProxySettings());
    NSArray *proxies = (__bridge NSArray *)(CFNetworkCopyProxiesForURL((__bridge CFURLRef _Nonnull)([NSURL URLWithString:@"http://www.baidu.com"]), (__bridge CFDictionaryRef _Nonnull)(proxySettings)));
    NSDictionary *settings = [proxies objectAtIndex:0];
    
    NSLog(@"host=%@", [settings objectForKey:(NSString *)kCFProxyHostNameKey]);
    NSLog(@"port=%@", [settings objectForKey:(NSString *)kCFProxyPortNumberKey]);
    NSLog(@"type=%@", [settings objectForKey:(NSString *)kCFProxyTypeKey]);
    
    if ([[settings objectForKey:(NSString *)kCFProxyTypeKey] isEqualToString:@"kCFProxyTypeNone"]){
        //沒(méi)有設(shè)置代理
        return NO;
    }else{
        //設(shè)置代理了
        return YES;
    }
}

讀取文件屬性

當(dāng)試圖獲取磁盤(pán)中一個(gè)文件的屬性信息時(shí),使用 [NSFileManager attributesOfItemAtPath:error:] 會(huì)浪費(fèi)大量時(shí)間讀取可能根本不需要的附加屬性挠说。這時(shí)可以使用 stat 代替 NSFileManager澡谭,直接獲取文件屬性:

#import <sys/stat.h>
struct stat statbuf;
const char *cpath = [filePath fileSystemRepresentation];
if (cpath && stat(cpath, &statbuf) == 0) {
    NSNumber *fileSize = [NSNumber numberWithUnsignedLongLong:statbuf.st_size];
    NSDate *modificationDate = [NSDate dateWithTimeIntervalSince1970:statbuf.st_mtime];
    NSDate *creationDate = [NSDate dateWithTimeIntervalSince1970:statbuf.st_ctime];
    // etc
}

class_isMetaClass的使用場(chǎng)景

NSMutableArray *arr = [NSMutableArray new];

[arr addObject:[NSObject class]];
[arr addObject:[NSValue class]];
[arr addObject:[NSNumber class]];
[arr addObject:[NSPredicate class]];
[arr addObject:@"not a class object"];

for (int i; i<[arr count]; i++) {
    id obj = [arr objectAtIndex:i];
    
    if(class_isMetaClass(object_getClass(obj)))
    {
        //do sth
        NSLog(@"Class: %@", obj);
    }
    else
    {
        NSLog(@"Instance: %@", obj);
    }
}

過(guò)濾字符串前面和后面的空白和換行

//常用于聊天信息發(fā)送時(shí)字符串處理
[self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]

利用arc4random_uniform()產(chǎn)生隨機(jī)數(shù)

OC 中有個(gè)arc4random()函數(shù)用來(lái)生成隨機(jī)數(shù)且不需要種子,但是這個(gè)函數(shù)生成的隨機(jī)數(shù)范圍比較大损俭,需要用取模的算法對(duì)隨機(jī)值進(jìn)行限制蛙奖,有點(diǎn)麻煩。其實(shí)Objective-C有個(gè)更方便的隨機(jī)數(shù)函數(shù)arc4random_uniform(x)杆兵,可以用來(lái)產(chǎn)生0~(x-1)范圍內(nèi)的隨機(jī)數(shù)雁仲,不需要再進(jìn)行取模運(yùn)算。如果要生成1~x的隨機(jī)數(shù)琐脏,可以這么寫(xiě):arc4random_uniform(x)+1攒砖。


屏蔽編譯警告

對(duì)于關(guān)閉某個(gè)警告,如果需要全局關(guān)閉的話日裙,直接在Other C Flags里寫(xiě) -Wno-...
就行了吹艇,比如 -Wextra -Wno-sign-compare
就是一個(gè)常見(jiàn)的組合。如果相對(duì)某幾個(gè)文件開(kāi)啟或禁用警告昂拂,在Build Phases的Compile Source相應(yīng)的文件中加入對(duì)應(yīng)的編譯標(biāo)識(shí)即可受神。如果只是想在某幾行關(guān)閉某個(gè)警告的話,可以通過(guò)臨時(shí)改變?cè)\斷編譯標(biāo)記來(lái)抑制指定類型的警告格侯,具體如下:
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[transaction.target performSelector:transaction.selector];
#pragma clang diagnostic pop


多線程group用法

//1.創(chuàng)建隊(duì)列組
dispatch_group_t group = dispatch_group_create();
//2.創(chuàng)建隊(duì)列
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
//3.多次使用隊(duì)列組的方法執(zhí)行任務(wù), 只有異步方法
//3.1.執(zhí)行3次循環(huán)
dispatch_group_async(group, queue, ^{
    for (NSInteger i = 0; i < 3; i++) {
        NSLog(@"group-01 - %@", [NSThread currentThread]);
    }
});
//3.2.主隊(duì)列執(zhí)行8次循環(huán)
dispatch_group_async(group, dispatch_get_main_queue(), ^{
    for (NSInteger i = 0; i < 8; i++) {
        NSLog(@"group-02 - %@", [NSThread currentThread]);
    }
});
//3.3.執(zhí)行5次循環(huán)
dispatch_group_async(group, queue, ^{
    for (NSInteger i = 0; i < 5; i++) {
        NSLog(@"group-03 - %@", [NSThread currentThread]);
    }
});
//4.都完成后會(huì)自動(dòng)通知
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
    NSLog(@"完成 - %@", [NSThread currentThread]);
});

創(chuàng)建屏幕截圖系統(tǒng)API

@interface UIScreen (UISnapshotting)
// Please see snapshotViewAfterScreenUpdates: in UIView.h for some important details on the behavior of this method when called from layoutSubviews.
- (UIView *)snapshotViewAfterScreenUpdates:(BOOL)afterUpdates NS_AVAILABLE_IOS(7_0);
@end

iOS-NSDateFormatter 格式說(shuō)明

轉(zhuǎn)載

格式化參數(shù)如下:
G: 公元鼻听,例如AD公元
yy: 年的后2位
yyyy: 完整年
MM: 月,顯示為1-12
MMM: 月联四,顯示為月份簡(jiǎn)寫(xiě),如 Jan
MMMM: 月撑碴,顯示為英文月份全稱,如 Janualy
dd: 日碎连,2位數(shù)表示灰羽,如02
d: 日,1-2位顯示鱼辙,如 2
EEE: 簡(jiǎn)寫(xiě)星期幾廉嚼,如Sun
EEEE: 全寫(xiě)星期幾,如Sunday
aa: 上下午倒戏,AM/PM
H: 時(shí)怠噪,24小時(shí)制,0-23
K:時(shí)杜跷,12小時(shí)制傍念,0-11
m: 分矫夷,1-2位
mm: 分,2位
s: 秒双藕,1-2位
ss: 秒,2位
S: 毫秒

常用日期結(jié)構(gòu):
yyyy-MM-dd
HH:mm:ss.SSS
yyyy-MM-dd
HH:mm:ss
yyyy-MM-dd
MM dd yyyy


根據(jù)圖片填充相應(yīng)顏色

原圖Mask

填充顏色后效果
- (UIImage *)jsq_imageMaskedWithColor:(UIColor *)maskColor
{
    NSParameterAssert(maskColor != nil);
    
    CGRect imageRect = CGRectMake(0.0f, 0.0f, self.size.width, self.size.height);
    UIImage *newImage = nil;
    
    UIGraphicsBeginImageContextWithOptions(imageRect.size, NO, self.scale);
    {
        CGContextRef context = UIGraphicsGetCurrentContext();
        
        CGContextScaleCTM(context, 1.0f, -1.0f);
        CGContextTranslateCTM(context, 0.0f, -(imageRect.size.height));
        
        CGContextClipToMask(context, imageRect, self.CGImage);
        CGContextSetFillColorWithColor(context, maskColor.CGColor);
        CGContextFillRect(context, imageRect);
        
        newImage = UIGraphicsGetImageFromCurrentImageContext();
    }
    UIGraphicsEndImageContext();
    
    return newImage;
}

怎么改變uitextfield placeholder的顏色和位置

//繼承uitextfield忧陪,重寫(xiě)這個(gè)方法
- (void) drawPlaceholderInRect:(CGRect)rect {
    [[UIColor blueColor] setFill];
    [self.placeholder drawInRect:rect withFont:self.font lineBreakMode:UILineBreakModeTailTruncation alignment:self.textAlignment];
}

把navigationbar弄成透明的而不是帶模糊的效果

[self.navigationBar setBackgroundImage:[UIImage new]
                         forBarMetrics:UIBarMetricsDefault];
self.navigationBar.shadowImage = [UIImage new];
self.navigationBar.translucent = YES;

攔截網(wǎng)頁(yè)圖片 并修改圖片大小

[aWebView stringByEvaluatingJavaScriptFromString:
 @"var script = document.createElement('script');"
 "script.type = 'text/javascript';"
 "script.text = \"function ResizeImages() { "
 "var myimg,oldwidth;"
 "var maxwidth=320;" //縮放系數(shù)
 "var images = document.images;"
 "alert(images.length);"
 "for(i=0;i <images.length;i++){"
 "myimg = images[i];"
 "if(myimg.width > maxwidth){"
 "oldwidth = myimg.width;"
 "myimg.style.width = maxwidth;"
 "myimg.style.height = myimg.height * (maxwidth/oldwidth);"
 "}"
 "}"
 "}\";"
 "document.getElementsByTagName('head')[0].appendChild(script);"];

[aWebView stringByEvaluatingJavaScriptFromString:@"ResizeImages();"];

最簡(jiǎn)單的獲取網(wǎng)絡(luò)get的數(shù)據(jù)

NSError *error = nil;
NSString *environmentResult = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://211.144.118.118/v1.0.0/house/job/get_url"] encoding:NSUTF8StringEncoding error:&error];

獲取某個(gè)類的成員變量嘶摊、屬性、方法

unsignedint numIvars; //成員變量個(gè)數(shù)
Ivar *vars = class_copyIvarList(NSClassFromString(@"BMKLocationService"), &numIvars);

NSString *key=nil;
for(int i = 0; i < numIvars; i++) {
    
    Ivar thisIvar = vars[i];
    key = [NSStringstringWithUTF8String:ivar_getName(thisIvar)];  //獲取成員變量的名字
    NSLog(@"variable name :%@", key);
    key = [NSStringstringWithUTF8String:ivar_getTypeEncoding(thisIvar)]; //獲取成員變量的數(shù)據(jù)類型
    NSLog(@"variable type :%@", key);
}
free(vars);


Method*meth =class_copyMethodList(NSClassFromString(@"UIView"), &numIvars);

for(inti =0; i < numIvars; i++) {
    MethodthisIvar = meth[i];
    
    SELsel =method_getName(thisIvar);
    constchar*name =sel_getName(sel);
    
    NSLog(@"zp method :%s", name);
}
free(meth);

returnYES;

過(guò)濾掉除了數(shù)字之外的字符

NSString* simplePhoneNumber =
[[phoneNumber componentsSeparatedByCharactersInSet:
  [[NSCharacterSet decimalDigitCharacterSet] invertedSet]]
 componentsJoinedByString:@""];

OC叶堆、C與C++ 字符串轉(zhuǎn)換

//char * /const char * 轉(zhuǎn)NSString
NSString * strPath = [NSString stringWithUTF8String:filename];

//NSString轉(zhuǎn)char * /const char *
const char * filePathChar = [filePath UTF8String];

//轉(zhuǎn)化char 到NSString
char myChar ='a';
NSString* string =[NSString stringWithFormat:@"%c", myChar];

//提取NSString的某個(gè)字段到char
- (unichar)characterAtIndex:(NSUInteger)index;

// c++ 和 oc的本身是不能直接對(duì)接的斥杜。要通過(guò)c的api做連接的。
// string 轉(zhuǎn) NSString
string str = [aNSString UTF8String];

//NSString 轉(zhuǎn) string
string str("testStr");
NSString * aString = [NSString stringWithUTF8String:str.c_str()];

方法 可變參數(shù)

- (id)initWithTitle:(NSString*)title delegate:(id<IBActionSheetDelegate>)delegate cancelButtonTitle:(NSString*)cancelTitle destructiveButtonTitle:(NSString*)destructiveTitle otherButtonTitles:(NSString*)otherTitles, ... {
    
    self = [self init];
    self.delegate= delegate;
    self.backgroundColor= [UIColorclearColor];
    
    NSMutableArray*titles = [[NSMutableArrayalloc]init];
    
    if(otherTitles) {
        va_listargs;
        va_start(args, otherTitles);
        for(NSString*arg = otherTitles; arg !=nil; arg =va_arg(args,NSString* ))
        {
            [titlesaddObject:arg];
        }
        va_end(args);
    }
}

強(qiáng)制繼承重寫(xiě)方法

- (BOOL)isFinished
{
    [self doesNotRecognizeSelector:_cmd];
    return NO;
    
}

(未完待續(xù))

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末上枕,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子辨萍,更是在濱河造成了極大的恐慌,老刑警劉巖锈玉,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件义起,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡默终,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)齐蔽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)两疚,“玉大人,你說(shuō)我怎么就攤上這事含滴∮詹常” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵谈况,是天一觀的道長(zhǎng)勺美。 經(jīng)常有香客問(wèn)我递胧,道長(zhǎng),這世上最難降的妖魔是什么赡茸? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任缎脾,我火速辦了婚禮,結(jié)果婚禮上坛掠,老公的妹妹穿的比我還像新娘赊锚。我一直安慰自己治筒,他們只是感情好屉栓,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著耸袜,像睡著了一般友多。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上堤框,一...
    開(kāi)封第一講書(shū)人閱讀 51,443評(píng)論 1 302
  • 那天域滥,我揣著相機(jī)與錄音,去河邊找鬼蜈抓。 笑死启绰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的沟使。 我是一名探鬼主播委可,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼腊嗡!你這毒婦竟也來(lái)了着倾?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤燕少,失蹤者是張志新(化名)和其女友劉穎卡者,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體客们,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡崇决,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了底挫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡碌冶,死狀恐怖涝缝,靈堂內(nèi)的尸體忽然破棺而出譬重,到底是詐尸還是另有隱情臀规,我是刑警寧澤栅隐,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布租悄,位于F島的核電站,受9級(jí)特大地震影響胶哲,放射性物質(zhì)發(fā)生泄漏鸯屿。R本人自食惡果不足惜把敢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一修赞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧熙尉,春花似錦搓扯、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)沾鳄。三九已至,卻和暖如春瓤的,著一層夾襖步出監(jiān)牢的瞬間圈膏,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工丈甸, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留睦擂,地道東北人茫多。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像天揖,于是被迫代替她去往敵國(guó)和親今膊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子伞剑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理黎泣,服務(wù)發(fā)現(xiàn),斷路器褐着,智...
    卡卡羅2017閱讀 134,656評(píng)論 18 139
  • 作為一名健身愛(ài)好者,使用Keep也有三千分鐘了器紧,最近對(duì)他們的根據(jù)日期顯示View界面很感興趣,忍不住動(dòng)手仿寫(xiě)了...
    DrunkenMouse閱讀 5,151評(píng)論 7 24
  • 首頁(yè) 資訊 文章 資源 小組 相親 登錄 注冊(cè) 首頁(yè) 最新文章 IT 職場(chǎng) 前端 后端 移動(dòng)端 數(shù)據(jù)庫(kù) 運(yùn)維 其他...
    Helen_Cat閱讀 3,874評(píng)論 1 10
  • 蓮傾水漾魚(yú)戲紋,青上池沿柳成分罐柳。碎云慘淡歸何處?暮光沉沉齿梁。 素衣未擇向陽(yáng)色肮蛹,夕顏豈肯效他人?吾心有意卻踟躕伦忠,殘香隱隱。
    風(fēng)陵渡_284b閱讀 259評(píng)論 0 0
  • 正上著課气忠,老爹發(fā)來(lái)一條微信:“要開(kāi)始剃頭發(fā)了旧噪∨洌”我沒(méi)理會(huì),最近總是對(duì)老爹發(fā)來(lái)的消息不怎么理會(huì)日月,即使有紅包也是等幾個(gè)...
    夏洛克5254閱讀 280評(píng)論 0 3