如何找到根控制起找到根控制器及获得文件夹路径

// 全局队列 异步下载图片

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

dispatch_async(dispatch_get_global_queue(0, 0), ^{

NSLog(@"%@", [NSThread currentThread]);

// 耗时操作: 放在全局队列,异步执行

// 1. url, 确定一个网络上的资源路径

NSURL *url = [NSURL URLWithString:@"http://fe.topit.me/e/d1/12/1170068721aa112d1el.jpg"];

// 2. 通过url可以下载对应的网络资源, 网络资源传输的都是二进制

NSData *data = [NSData dataWithContentsOfURL:url];

// 3. 二进制转成图片

UIImage *image = [UIImage imageWithData:data];

// 4. 更新UI,在主线程-》 直接把任务添加到主队列,就会在主队列执行

dispatch_async(dispatch_get_main_queue(), ^{

self.iconView.image = image;

NSLog(@"-----%@", [NSThread currentThread]);

});

});

}

//1.获取plist文件的路径

SString *listPath=[[NSBundle mainBundle] pathForResource:@"textList1.plist" ofType:nil];

//2.字典初始化--根据一个文件初始化字典

NSDictionary *dict=[NSDictionary dictionaryWithContentsOfFile:listPath];

/**NSString字符串特性*/

[[UITabBar appearance] setTintColor:RGBA_COLOR(18, 191, 195, 1.0)];

// 过滤掉输入的特色字符串的

NSString *string = [textField.text stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet]];

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/* 清除缓存中存储的缓存*/

-(void)didReceiveMemoryWarning{

[super didReceiveMemoryWarning];

// 需要在这里做一些内存清理工作,如果不清,会被系统闪退

// 清理图片的缓存

[self.imageCache removeAllObjects];

// 清理操作的缓存

[self.operationCache  removeAllObjects];

// 取消下载队列里面的任务

[self.opQueue cancelAllOperations];

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//显示的创建线程

// 又创建了一个新的线程

NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil];

thread.name = @"线程A"; // 线程

[thread start];

//使线程放到可调度线程池,处于就绪状态,等待被cup调用

// 隐世线程

[self performSelectorInBackground:@selector(longTimeOperation) withObject:nil];

//隐式的创建方式

[self performSelectorInBackground:@selector(run2:) withObject:@"DF"];

// 类方法

[NSThread detachNewThreadSelector:@selector(run2:) toTarget:self withObject:@"Hello"]

// 对象方法

NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil];

////////////////////////////////////////////////////////////////////////////////////////////////////////////

/**获得当前机器的版本**/

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

if ([[UIDevice currentDevice].systemVersion doubleValue] >= 8.0) {

// 注册推送通知(本地通知/远程通知)

UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil];

[application registerUserNotificationSettings:settings];

// 获取DeviceToken

[application registerForRemoteNotifications];

} else {

[application registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound];

}

if (launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]) {

// 写跳转代码即可

}

return YES;

}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*story加载控制*/

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Common" bundle:nil];

CMLaunchAdViewController *adVC = [storyboard instantiateViewControllerWithIdentifier:@"CMLaunchAdViewController"];

UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"Common" bundle:[NSBundle mainBundle]];

// 如何找到根控制起找到根控制器

UINavigationController *navigationController =(UINavigationController *)[UIApplication sharedApplication].keyWindow.rootViewController;

// 先判断上次缓存的二级广告开关值

//全局并发队列

dispatch_queue_t globalQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

//主队列: 属于串行队列

dispatch_queue_t mainQueue = dispatch_get_main_queue();

//定时循环执行事件

//dispatch_source_set_timer 方法值得一提的是最后一个参数(leeway),他告诉系统我们需要计时器触发的精准程度。所有的计时器都不会保证100%精准,这个参数用来告诉系统你希望系统保证精准的努力程度。如果你希望一个计时器每5秒触发一次,并且越准越好,那么你传递0为参数。另外,如果是一个周期性任务,比如检查email,那么你会希望每10分钟检查一次,但是不用那么精准。所以你可以传入60,告诉系统60秒的误差是可接受的。他的意义在于降低资源消耗。

// 在全局队列里面

_timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, globalQueue);

// 设置隔多久执行时间

dispatch_source_set_timer(_timer, DISPATCH_TIME_NOW, 1.0 * NSEC_PER_SEC, 0.0 * NSEC_PER_SEC);

// 执行事件

dispatch_source_set_event_handler(_timer, ^{ //计时器事件处理器

DLog(@"Event Handler");

if (timeout <= 0) {

//

dispatch_source_cancel(_timer); //取消定时循环计时器;使得句柄被调用,即事件被执行

// 主队列异步执行

dispatch_async(mainQueue, ^{

if (![CMAdManager shareInstance].launchAdClicked) {

if (!self.skipButton.selected) {

[self skipAction:self.skipButton];

}

}

});

} else {

NSString *strTime = [NSString stringWithFormat:@"%d S跳过", timeout];

// 在主队列里面执行

dispatch_async(mainQueue, ^{

[self.skipButton setTitle:strTime forState:UIControlStateNormal];

});

timeout--;

}

});

dispatch_source_set_cancel_handler(_timer, ^{ //计时器取消处理器;调用 dispatch_source_cancel 时执行

DLog(@"Cancel Handler");

});

// 开启定时器

dispatch_resume(_timer);

//恢复定时循环计时器;Dispatch Source 创建完后默认状态是挂起的,需要主动恢复,否则事件不会被传递,也不会被执行

///////////////////////////////////////////////////////////////////////////////////////

/*数组便利*/

[self.adList enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {

CMAdObject *adObj = (CMAdObject *)obj;

if ([adObj.imageUrl isEqualToString:object.imageUrl])

{

sameImg = YES;

}

}];

/*USerDefalut*/

[userDefaults setObject:ad.Adid forKey:kLaunchAdID];

[userDefaults synchronize];

///////////////////////////////////////////////////////////////////////////////////////

// 总大小

unsigned long long size = 0;

// 获得缓存文件夹路径

NSString *cachesPath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).lastObject;

// 文件管理者

NSFileManager *fileManager = [NSFileManager defaultManager];

// 包含的文件数

NSLog(@"%@", [mgr contentsOfDirectoryAtPath:cachesPath error:nil]);

// 子文件夹                                            是component

NSString *dirpath = [cachesPath stringByAppendingPathComponent:@"Mp3/MySister"];

// 子文件夹包含的文件数

NSLog(@"%@", [fileManage contentsOfDirectoryAtPath:dirpath error:nil]);

// 获得文件夹的属性

// 文件的创建时间、大小、位置

NSDictionary *dict = [mgr attributesOfItemAtPath:dirpath error:nil];

NSLog(@"%@",dict);

size = [mgr attributesOfItemAtPath:dirpath error:nil].fileSize;

NSLog(@"-------%llu", size);

// 打印出所有文件的路径

NSArray *subpaths = [mgr subpathsAtPath:dirpath];

NSLog(@"%@",subpaths);

for (NSString *subpath in subpaths) {

// 所有路径

NSString *fullSubpath = [dirpath stringByAppendingPathComponent:subpath];

// 累加文件大小

size += [mgr attributesOfItemAtPath:fullSubpath error:nil].fileSize;

//        NSDictionary *attrs = [mgr attributesOfItemAtPath:fullSubpath error:nil];

//        size += [attrs[NSFileSize] unsignedIntegerValue];

}

NSLog(@"%llu",size);

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/* 获取时间 */

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

formatStr = @"YYHHDD"

dateFormatter.dateFormat = formatStr;

NSDate* nowDate=[NSDate date];

/*Block 弱引用相关*/

__weak CMAdManager* weakSelf=self;

/*单例子*/

+ (instancetype)shareInstance{

static Manager *sharedInstance;

static dispatch_once_t prdictate;

dispatch_once(&prdictate, ^{

sharedInstance = [[Manager alloc] init];

});

return sharedInstance;

}

/*消息通知*/

[[CMAppDescription sharedInstance] addObserver:self forKeyPath:@"showAdSwitch" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onApplicationWillTerminate:) name:UIApplicationWillTerminateNotification object:nil];

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(setLoginPage:) name:kSetLoginPageNotification object:nil];

时间: 2024-10-20 23:33:20

如何找到根控制起找到根控制器及获得文件夹路径的相关文章

CI3.0控制器下面建文件夹 访问一直404 的解决方法

在单入口文件(框架目录下面的index.php)最下面的require_once BASEPATH.'core/CodeIgniter.php';这行上面设置一个路径,是相对于conrollers文件夹的,你这里这样写:$routing['directory'] = './home/';(这里的home是控制器里的子目录),然后在路由配置文件那里填$route['default_controller'] = 'home';

从零開始写游戏引擎(一) - project创建以及文件夹设置还有版本号控制

一句话提要 好的開始等于成功了一半. 创建文件夹结构 project文件夹下最好分为以下几个文件夹 Docs - 开发文档,设计文档 Assets - 角色,动作,模型和音效等 Source - 代码,project文件或者makefile也放在这里,假设有引用第三方的lib,在里面建立一个3rdParty的文件夹,放在里面. Temp - 用于防止编译生成的文件 Lib - 放置编译好的lib文件,将source编译成lib能够更好地保护源码. Game - 用于放置release buid,

未找到与名为“xxx”的控制器匹配的类型。

自己封装了一个BaseApiControllerr把他独立成一个项目出来在引用不行,而用默认自带的ApiControllerr可以. <Error> <Message> 未找到与请求 URI“http://localhost:9939/api/exams/examprocess/submitanswer/?id1=23”匹配的 HTTP 资源. </Message> <MessageDetail>未找到与名为“examprocess”的控制器匹配的类型.&l

使用容器控制器控制另外两个控制器的view交换

建三个UIViewController 的子控制器,其中一个为根控制器,另外两个控制器的视图作为切换对象 AppDelegate中代码 //AppDelegate.h中代码 #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @property (retain, nonatomic) UIWindow *window; @end //AppDelegate.m中代码

Ognl中根元素与非根元素的关系

Ognl中根元素与非根元素的关系 根元素:可以理解为全局变量 非根元素:局部变量 从两者获取其属性的方式看: Object obj = Ognl.parseExpression(“[1]”); [1]根元素:不用写#号,填写属性 非根元素:用写#号,填写对象名字 注:从填写内容能看出全局和局部了 返回得到的obj就是在全文中从上到下搜索到的[1],比如说全局和局部名称一致了,你填写属性那肯定就是全局,都没到局部那个地方就搜索到了. OgnlContext 这就是上下文.上下文干啥的,可以理解下英

dede修改templets模板文件夹后,出现“无法在这个位置找到: ”错误的解决办法

修改templets模板文件夹的方法: 首先找到系统配置文件common.inc.php,此文件存放在Include目录下,打开common.inc.php来修改默认模板目录templets, 查找:$cfg_templets_dir = $cfg_cmspath.'/templets'; 将上面的红色部分修改为想要的文件夹名称,例如:xinfu800.com_moban,修改完之后需要手动将Templets重命名为:xinfu800.com_moban.上述所说的方法还可以修改插件目录.会员目

关于Unity中Mecanim动画的动画状态代码控制与代码生成动画控制器

对于多量的.复杂的.有规律的控制器使用代码生成 动画状态代码控制 1:每个动画状态,比如进入状态,离开状态, 等都有可能需要代码来参与和处理,比如,进入这个动画单元后做哪些事情,来开这个动画单元后做哪些事情,为了解决这个问题,unity允许每个动画单元来绑定一个脚本代码,这个脚本代码必须继承于StateMachineBehaviour;2: 可以在动画状态的Add Behaviour上添加挂载一个脚本到动画状态;3: StateMachineBehaviour主要接口: (1)OnStateEn

在电脑上找到这个路径:D:\jakarta-tomcat-6\conf\Catalina,将localhost目录直接删除掉,再一运行,就没事了! 因为配置文件中配置了启动程序,而webapps文件夹下却没有此应用程序,所以出现了上述错误。

java.lang.IllegalArgumentException: Document base D:\appservers\apache-tomcat-6.0.20\webapps\megaeyes_enterprise_manager does not exist or is not a readable directory 2010-05-20 15:28:31|  分类: tomcat|举报|字号 订阅 2010-5-20 15:22:44 org.apache.catalina.co

特征方程的根一定是整数根

[特征方程的根一定是整数根] 这里蕴含着:(p,q)=1,且p^n整除q,则q=1的定理.