三星冰箱e27什么故障df(三星冰箱e27什么故障)

电脑维修 2025-03-23 10:02www.caominkang.com电脑维修知识

iOS世界的神秘面纱:深入解析KVO

导读:

在iOS开发领域,许多开发者对KVO的认识仅限于isa指针交换的层次,而KVO的实现细节却鲜为人知。为了揭开KVO的神秘面纱,我们将从汇编层面进行深度解析。

一、缘起Aspects

SDMagicHook开源后,很多人询问它与Aspects的区别。我在GitHub上研究后发现,Aspects同样以isa交换为基础进行hook操作,但两者在具体实现和API设计上存在一些差异。SDMagicHook解决了Aspects未能解决的KVO冲突难题。

1. SDMagicHook的API设计更友好灵活

想要了解SDMagicHook和Aspects的详细异同,请参见

2. 解决KVO冲突难题

在Aspects的说明文档中,有一条关于KVO兼容问题的描述。那么SDMagicHook是否也会面临同样的问题呢?经过测试发现,SDMagicHook确实也遇到了这个问题。问题的实际表现比Aspects作者描述的更为复杂和诡异。问题的具体表现会随着系统KVO(以下简称native-KVO)和自己实现的类KVO(custom-KVO)的调用顺序和次数的不同而各异。

目前,SDMagicHook已经解决了上述各类问题。接下来,我们将从汇编层面探VO的本质,并详细介绍SDMagicHook的实现方案。

二、从汇编层面探VO本质

要弄清楚KVO的问题,首先需要研究清楚系统的KVO是如何实现的。系统的KVO实现相当复杂,那么该从哪里入手呢?我们需要了解当对被KVO观察的目标属性进行赋值操作时到底发生了什么。以自建的Test类为例,我们对Test类实例的num属性进行KVO操作。

当我们给num赋值时,会触发KVO类自定义的setNum:方法,也就是_NSSetIntValueAndNotify函数。那么,_NSSetIntValueAndNotify的内部实现是怎样的呢?

为了深入了解KVO的实现细节,我们需要深入研究_NSSetIntValueAndNotify函数的内部机制,以及其如何与系统其他部分进行交互。这包括研究KVO如何注册观察者、如何通知观察者属性变化等。只有深入了解这些实现细节,我们才能更好地理解KVO的玄妙之处,并解开其神秘面纱。

以下是这段伪代码的简化版本和解释:

```pseudo

// 定义两个结构体,分别表示 KVO 类的索引实例变量和栈块

// _NSSetIntValueAndNotify 函数

void _NSSetIntValueAndNotify(对象 obj, 选择器 sel, 整数 number) {

// 获取对象的类

Class cls = object_getClass(obj);

// 获取类实例的索引实例变量

SDTestKVOClassIndexedIvars indexedIvars = object_getIndexedIvars(cls);

// 加锁,确保线程安全

pthread_mutex_lock(indexedIvars->lock);

// 从字典中获取对应的字符串(可能是属性的名字)

NSString str = (NSString )CFDictionaryGetValue(indexedIvars->mdict, sel);

// 复制字符串(确保不直接操作原始数据)

str = [str copyWithZone:nil];

// 解锁

pthread_mutex_unlock(indexedIvars->lock);

// 检查标志位,决定是否自定义了通知方法

if (indexedIvars->flag) {

// 触发属性值变化前的通知

[obj willChangeValueForKey:str];

// 如果自定义了方法实现,则调用该方法并传入参数

if (class_getMethodImplementation(indexedIvars->originalClass, sel)) {

((void()(id obj, SEL sel, int number))class_getMethodImplementation(indexedIvars->originalClass, sel))(obj, sel, number);

}

// 触发属性值变化后的通知

[obj didChangeValueForKey:str];

} else {

// 创建一个栈块并设置相关参数

SDTestStackBlock block;

block.isa = _NSConcreteStackBlock; // 设置块的类型

block.flags = ...; // 设置块的其他属性(例如,可能是用来标记该块的特性)

block.invoke = ___NSSetIntValueAndNotify_block_invoke; // 设置块的调用函数指针

... // 设置其他必要的属性或参数(如索引实例变量、选择器、对象等)

`___NSSetIntValueAndNotify_block_invoke` 是 KVO 机制中的一个关键函数实现。它的汇编实现展示了如何从 block 中获取这些信息,并调用相应的方法实现。具体来说,这个函数执行了以下步骤:

1. 从 block 中获取 `indexedIvars` 和其他相关信息。

2. 使用 `class_getMethodImplementation` 获取与给定选择器(sel)对应的方法实现(IMP)。

3. 使用获取到的方法实现、对象(obj)、选择器(sel)和数值(num)来执行实际的 KVO 操作。

那么,关于 `indexedIvars` 的生成和包含的数据:

`indexedIvars` 是在类被加载时由 Objective-C 运行时系统生成的。它包含了类中所有实例变量的信息,如名称、偏移量等。这些信息被索引和优化以便于 KVO 系统使用。

`indexedIvars` 的具体结构是内部实现的细节,开发者通常不需要关心其具体的实现细节。但大致上,它会包含实例变量的名称、类型、在内存中的位置等信息。

`indexedIvars` 是 KVO 系统中的关键组成部分,它存储了类的实例变量信息,使得 KVO 可以高效地跟踪和修改对象的属性。而 `___NSSetIntValueAndNotify_block_invoke` 函数则是 KVO 机制中的一个实现细节,负责根据 `indexedIvars` 中的信息来调用相应的方法实现,完成属性的设置和通知。对于文章中的汇编代码,我们确实可以转化为更易于理解的伪代码。从这段汇编代码中,我们可以发现其主要是关于创建和配置一个KVO(键值观察)类的过程。

```c

typedef struct {

Class originalClass; // 原始类

Class KVOClass; // KVO观察类

CFMutableSetRef mset; // 用于存储观察者的集合

CFMutableDictionaryRef mdict; // 用于存储键值对的字典

pthread_mutex_t lock; // 互斥锁

// 其他的私有变量

bool flag; // 标志位,表示是否已初始化KVO

} SDTestKVOClassIndexedIvars;

Class _NSKVONotifyingCreateInfoWithOriginalClass(Class originalClass) {

const char clsName = class_getName(originalClass); // 获取原始类的名字

size_t len = strlen(clsName) + 0x10; // 计算新类名的长度

char newClsName = malloc(len); // 分配内存以存储新类名

// 构造新的类名

const char prefix = "NSKVONotifying_";

strncpy(newClsName, prefix, len);

strncat(newClsName, clsName, len - strlen(prefix) - 1);

// 创建一个新的类对

Class newCls = objc_allocateClassPair(originalClass, newClsName, 0x68);

if (newCls) {

// 注册新类

objc_registerClassPair(newCls);

// 获取新类的索引Ivars

SDTestKVOClassIndexedIvars indexedIvars = object_getIndexedIvars(newCls);

// 设置原始类

indexedIvars->originalClass = originalClass;

indexedIvars->KVOClass = newCls;

// 初始化集合和字典

CFMutableSetRef mset = CFSetCreateMutable(nil, 0, kCFCopyStringSetCallBacks);

indexedIvars->mset = mset;

CFMutableDictionaryRef mdict = CFDictionaryCreateMutable(nil, 0, nil, kCFTypeDictionaryValueCallBacks);

indexedIvars->mdict = mdict;

// 初始化互斥锁

pthread_mutex_init(indexedIvars->lock);

// 使用dispatch_once确保只初始化一次

static dispatch_once_t onceToken;

dispatch_once(&onceToken, ^{

bool flag = true;

// 检查是否已存在KVO的实现

IMP willChangeValueForKeyImp = class_getMethodImplementation(indexedIvars->originalClass, @selector(willChangeValueForKey:));

IMP didChangeValueForKeyImp = class_getMethodImplementation(indexedIvars->originalClass, @selector(didChangeValueForKey:));

if (willChangeValueForKeyImp == _NSKVONotifyingCreateInfoWithOriginalClass.NSObjectWillChange &&

didChangeValueForKeyImp == _NSKVONotifyingCreateInfoWithOriginalClass.NSObjectDidChange) {

flag = false;

}

// 设置标志位

indexedIvars->flag = flag;

// 设置KVO的回调方法

NSKVONotifyingSetMethodImplementation(indexedIvars, @selector(_isKVOA), NSKVOIsAutonotifying, nil);

NSKVONotifyingSetMethodImplementation(indexedIvars, @selector(dealloc), NSKVODeallocate, nil);

NSKVONotifyingSetMethodImplementation(indexedIvars, @selector(class), NSKVOClass, nil);

});

} else {

// 错误处理过程省略......

return nil;

}

return newCls;

}

```

这段伪代码更清晰地展示了`_NSKVONotifyingCreateInfoWithOriginalClass`函数的工作过程,从创建新的类对,到设置其属性,再到注册并初始化KVO的回调方法。苹果运行时中的objc_allocateClassPair与KVO的内存管理

在苹果的运行时编程中,`objc_allocateClassPair`是一个关键的函数,它允许开发者动态地创建新的类。其中的`extraBytes`参数为类的末尾分配额外的空间,用于存储索引实例变量(indexed ivars)。特别是在Key-Value Observing(KVO)的上下文中,这显得尤为重要。

当我们谈论KVO时,系统会在生成KVO类时额外分配0x68字节的空间。为了更好地理解这一内存布局,我们可以定义一个结构体`SDTestKVOClassIndexedIvars`。这个结构体包含了多个元素,从原始的类指针到用于同步的互斥锁等。这些元素在内存中的位置通过偏移量(offset)来标识。

当我们混合使用原生KVO和自定义KVO(custom-KVO)时,可能会遇到一些问题。想象一下,首先使用原生KVO对一个实例进行操作,此时实例的isa指针指向了由KVO生成的类(如`NSKVONotifying_Test`)。接着,我们对这个实例应用自定义KVO,这可能会基于已有的KVO类再创建一个子类。如果没有像原生KVO那样为新的子类分配额外的0x68字节空间,那么在执行某些操作时可能会出现问题。特别是当调用实例的方法并尝试访问KVO的关键信息时,由于无法正确获取到预期的内存布局,可能会导致程序崩溃。

为了解决这种因custom-KVO导致的native-KVO崩溃问题,开发者需要确保在创建自定义KVO类时遵循相同的内存布局规则。这意味着,当基于一个已经由KVO处理过的类创建新的子类时,必须考虑到额外的0x68字节空间。否则,当尝试访问这些关键信息时,程序可能会因为无法找到预期的数据结构而崩溃。简而言之,为了保证稳定性,自定义KVO的实现需要模拟原生KVO的内存管理策略。

深入理解`objc_allocateClassPair`和KVO的内存管理对于开发稳健的iOS应用程序至关重要。只有确保内存布局的正确性,才能有效地避免潜在的崩溃问题。经过深入研究,我们发现了一种巧妙的方法来解决在调用native-KVO后custom-KVO失效的问题。当我们遇到“先调用native-KVO再调用custom-KVO,custom-KVO运行正常,但native-KVO会崩溃”或者“先调用native-KVO再调用custom-KVO再调用native-KVO,native-KVO运行正常但custom-KVO失效”这类问题时,我们可以采取以下策略:

我们可以仿照native-KVO的做法,在生成SD_NSKVONotifying_Test_abcd类时,额外分配0x68字节的空间。这样在处理custom-KVO操作时,只需将NSKVONotifying_Test类的indexedIvars复制一份到SD_NSKVONotifying_Test_abcd即可。代码实现如下:

在一般情况下,基于native-KVO进行custom-KVO操作时,拷贝完native-KVO类的indexedIvars到custom-KVO类上即可。但我们的SDMagicHook不仅要做到这些,还需要解决一个复杂的问题。由于SDMagicHook采用消息转发的形式来调度方法,所以在处理过程中会面临一些挑战。

由于使用了消息转发机制,我们将SD_NSKVONotifying_Test_abcd的setNum:方法的实现指向了_objc_msgForward,并生成一个新的SEL__sd_B_abcd_setNum:来指向其子类的原生实现。在示例中,这就是NSKVONotifying_Test的setNum:方法实现的void _NSSetIntValueAndNotify(id obj, SEL sel, int number)函数。当test实例收到setNum:消息时,会先触发消息转发机制。SDMagicHook的消息调度系统最终会通过向test实例发送一个__sd_B_abcd_setNum:消息来实现对被Hook的原生方法的回调。这时,__sd_B_abcd_setNum:对应的实现函数正是void _NSSetIntValueAndNotify(id obj, SEL sel, int number)。__sd_B_abcd_setNum:会被作为sel参数传递到_NSSetIntValueAndNotify函数。

当_NSSetIntValueAndNotify函数内部尝试从indexedIvars获取原始类Test,并从Test上查找__sd_B_abcd_setNum:对应的方法时,如果找不到对应的函数实现,就会导致崩溃。为了解决这个问题,我们还需要为Test类新增一个__sd_B_abcd_setNum:方法,并将其实现指向setNum:的实现。这样,即使发生消息转发,也能确保程序的稳定运行。

至于为何会出现“先调用native-KVO再调用custom-KVO再调用native-KVO时custom-KVO失效”的问题,关键在于native-KVO的机制。native-KVO会持有一个全局的字典来存储KVO类信息,以KVO操作的原类为key,NSKeyValueContainerClass实例为value。在处理多次KVO操作时,需要注意管理好这个字典,避免因为不当的操作导致custom-KVO失效。

通过深入理解KVO机制和SDMagicHook的工作原理,并结合实际场景进行分析和优化,我们可以有效地解决这些问题,提升代码的稳定性和性能。在我们再次对test实例进行KVO操作时,native-KVO机制将会以Test类为关键字,从NSKeyValueContainerClassPerOriginalClass中查找到先前存储的NSKeyValueContainerClass。然后,它会直接获取KVO类NSKVONotifying_Test,并通过object_setclass方法将其应用到test实例上,这时,custom-KVO就会失效。

为了解决这个问题,我们考虑了两种策略:一是修改NSKVONotifying_Test相关的KVO数据,二是通过FishHook来拦截系统的setclass操作。第一种方案并不可行,因为NSKVONotifying_Test的相关数据是在所有Test类实例进行KVO操作时共享的,任何改动都可能对全局的Test类实例的KVO产生影响。

我们选择通过FishHook来拦截系统的object_setclass函数。当系统以NSKVONotifying_Test为参数对一个实例进行setclass操作时,我们会进行检查。如果当前的isa指针是SD_NSKVONotifying_Test_abcd,并且SD_NSKVONotifying_Test_abcd是继承自系统的NSKVONotifying_Test时,我们就会跳过此次setclass操作。

由于custom-KVO采用了特殊的消息转发机制来调度被拦截的方法,如果先进行custom-KVO然后再进行native-KVO,就可能导致被观察属性被重复调用。我们在对一个实例进行首次custom-KVO操作之前,先进行了native-KVO,以确保custom-KVO的方法调度能够正常工作。

KVO的本质是基于被观察实例的isa生成一个新的类,并在该类的extra空间中存放与KVO操作相关的关键数据。系统的KVO实现较为复杂,涉及多个函数调用的层次较深。为了更好地理解和解决KVO相关的问题,我们可以从整个函数调用栈的末端开始,层层向前梳理出主要的操作路径。通过这个方式,我们可以实现对KVO的快速了解和认识。

至此,我们完成了一个良好兼容native-KVO的custom-KVO的实现。回顾这个过程,解决方案显得有些巧妙,但这是在iOS系统的各种限制下的无奈选择。我们并不提倡随意使用类似的巧妙操作,而是希望通过这个实例向大家介绍KVO的本质以及我们分析和解决问题的思路。如果读者能够从中汲取一些灵感,那么这篇文章的目的便达到了。

更多分享:

开源 | Objective-C & Swift 最轻量级 Hook 方案

今日头条 Android “秒” 级编译速度优化

本团队主要服务于飞书音视频产品,致力于提升产品性能、稳定性等用户体验,同时不断优化研发流程、编译优化、架构方向。我们长期在上海招聘Android/iOS以及全栈平台架构方向的工程师,欢迎感兴趣的朋友联系邮箱qiuzehui@bytedance.com(邮件标题请注明:字节跳动-飞书Mobile直推)。

接下来关注技术新闻:近年来,国内各大网站逐渐升级为HTTPS加密连接,甚至全站HTTPS,以提升网站的安全性。一向被认为“安全可靠”的HTTPS安全传输协议在客户端出现木马的情况下也可能被轻易劫持,新闻、娱乐、购物等网站均遭受影响。近期,360互联网安全中心再次警觉地发现了一款专门劫持https的木马病毒开始新一轮的活跃。早在2017年,该病毒团伙已受到360互联网安全中心的曝光,尽管之后有所收敛,但现在他们又卷土重来,借助“”网站和广告位诱导用户安装。据360网络安全研究院的数据显示,该木马主要劫持的域名之一(erhaojie.com)的网络访问请求在近期顶峰时日均超过190万次。

传播方式主要是通过所谓的“移花接木”偷换广告策略,这个HTTPS劫匪木马每天能劫持多达200万次的网络访问。具体的劫持过程与早期版本相比,并没有太大的变化。这个木马病毒却具备更加多样的危害。

在分析过程中,发现这又是一起公司形式制作恶意软件的案例。通过该劫持木马所用到的云控域名的备案信息及Whois信息,查出了注册者为某公司的李姓员工。而该公司以及相关的其他几个公司、个人手机号、QQ等所有相关信息都指向同一主体。360互联网安全中心已将相关信息提交主管部门。

IOCs:

d61c2b9ca4a6c6ba5f367198b2e1eb30

3a9c8b204fb373c312a48fc45fa74be0

f464f26332512fc075f3c088713205e4等

(注:以上为随机生成的字符组合,无实际意义)

新闻

近期,济南市公布了关于配装眼镜产品质量的市级监督抽查结果。此次是今年的第一批抽查活动,主要关注生产领域的配装眼镜产品。此次抽查共涉及了全市的多个生产企业,共抽查了80批次产品。这次抽查行动的目的是确保消费者的视觉健康,确保市场上销售的眼镜产品质量符合国家标准。

经过严格的检测与评估,大部分产品的性能和质量都达到了国家标准。也有部分产品存在质量问题,对此,已经要求相关企业进行整改。也提醒消费者在购买眼镜时,要选择正规渠道,购买有质量保证的产品。对于不合格的产品,消费者可以向相关部门投诉,以保护自己的合法权益。

此次监督抽查结果反映了济南市配装眼镜产品的质量状况,也为生产企业提供了一个质量改进的参考方向。这也提醒广大消费者在购买眼镜时要有一定的质量意识,选择优质的产品。对于生产企业来说,他们需要严格按照国家标准生产,确保产品质量,以满足消费者的需求。

此次市级监督抽查对于提高济南市配装眼镜产品的质量起到了积极的推动作用。未来,济南市将继续加大对工业产品的监督力度,确保产品质量符合国家标准,保护消费者的权益。也呼吁全社会共同参与监督,共同营造一个安全、健康的市场环境。以上就是关于济南2023年第一批配装眼镜产品质量市级监督抽查结果的报道。更多详细信息请访问相关部门官网获取。期待大家共同关注产品质量问题,为消费者的权益保护贡献一份力量。

标题:济南公布首批配装眼镜产品质量市级监督抽查结果:呼吁共同关注产品质量问题

副标题:全市共抽查生产领域配装眼镜产品80批次,呼吁消费者选择正规渠道购买眼镜以保护自身权益。本次抽查是根据一系列国家标准进行的,包括GB 10810.1-2005《眼镜镜片 第1部分:单光和多焦点镜片》、GB 10810.3-2006《眼镜镜片及相关眼镜产品 第3部分:透射比规范及测量方法》以及GB 13511.1-2011《配装眼镜 第1部分:单光和多焦点》等,对配装眼镜产品进行了全面检验。检验项目涵盖了光学中心的垂直互差、可见光透射比、光学中心单侧水平偏差、装配质量(如金属框架眼镜锁接管的间隙)、太阳紫外波段的透射比、球镜顶焦度偏差、柱镜轴位偏差、镜片色泽、镜片材料和表面质量、镜架使用的材料以及标志等。

在抽查过程中,发现济南市历城区明亮眼镜店生产的某批次产品存在不符合相关标准的问题。具体问题集中在光学中心水平偏差和光学中心单侧水平偏差上。对于这一发现,山东省市场监督管理局高度重视,已责成相关市场监督管理部门依法处理。

2023年配装眼镜产品质量市级监督抽查不合格情况汇总

序号 | 产品名称 | 抽查领域 | 企业名称 | 统一社会信用代码 | 标称生产单位名称 | 生产日期/批号 | 商标 | 规格型号 | 综合判定

--|--|--|--|--|-|--||--|--

1 | 配装眼镜 | 生产领域 | 济南市历城区明亮眼镜店 | 92370128MA3LCTBU1Q | 济南市历城区明亮眼镜店 | 2023年7月19日 | R | -4D L:-4.5D PD:58mm | 不合格

2023年配装眼镜产品质量市级监督抽查合格情况汇总

序号 | 产品名称 | 抽查领域 | 企业名称 | 统一社会信用代码 | 标称生产单位名称 | 生产日期/批号 | 商标 | 规格型号 | 综合判定

--|--|--|--|--|-|--||--|--

1 | 配装眼镜 | 生产领域 | 济南市天桥区周氏齐鲁茂昌眼镜行 | 91370105MA3EQ0103L | 济南市天桥区周氏齐鲁茂昌眼镜行 | 2023年10月9日 | R | -4D-1.5D×150 L:-4.25D-1.25D×45 PD:62mm | 合格

2 | 配装眼镜 | 生产领域 | 济南市天桥区视达眼镜店 | 91370105MA3DG03J6B | 济南市天桥区视达眼镜店 | 2023年10月9日 | R | -4.25D-0.75D×110 L:-4.25D-1D×135 PD:59mm | 合格

3 | 配装眼镜 | 生产领域 | 济南市天桥区丽之康眼镜店 | 91370105MA3U59TKX6 | 济南市天桥区丽之康眼镜店 | 2023年10月9日 | R | -4D-1.25D×150 L:-4.5D-0.5D×165 PD:58mm | 合格

4 | 配装眼镜 | 生产领域 | 山东忆展眼镜有限公司济南泉城路店 | 91370102MA3MABMN5W | 山东忆展眼镜有限公司济南泉城路店 | 2023年9月27日 | R | -4D-1.5D×150 L:-4.5D-1D×45 PD:65mm | 合格

5 | 配装眼镜 | 生产领域 | 济南立创光业商贸有限公司世茂广场店 | 91370102MA3M00DF8L | 济南立创光业商贸有限公司世茂广场店 | 2023年9月27日 | R | -4D-1.5D×150 L:-4.5D-1D×45 PD:65mm | 合格

6 | 配装眼镜 | 生产领域 | 济南姜玉坤视光科技有限公司王舍人分公司 | 91370112MA3MT99H14 | 济南姜玉坤视光科技有限公司王舍人分公司 | 2023年8月29日 | R | -4.25D-1D×170 L:-4D-0.75D×15 PD:63mm | 合格

7 | 配装眼镜 | 生产领域 | 济南轻镜生活眼镜店 | 91370100MA3MU1A7XP | 济南轻镜生活眼镜店 | 2023年8月30日 | R | -4D-0.5D×20 L:-4D-1.25D×105 PD:60mm | 合格

8 | 配装眼镜 | 生产领域 | 济南齐鲁茂昌眼镜有限公司 | 91370100MA3QWJQ91W | 济南齐鲁茂昌眼镜有限公司 | 2023年8月29日 | R | -4D-1.25D×150 L:-4.25D-0.75D×45 PD:62mm | 合格

9 | 配装眼镜 | 生产领域 | 济南市章丘区东亮眼镜店 | 91370181MA3M6JRGXQ | 济南市章丘区东亮眼镜店 | 2023年8月16日 | R | -4.25D-1D×50 L:-4.25D-0.75D×135 PD:59mm | 合格

10 | 配装眼镜 | 生产领域 | 济南高新区新佰视眼视光中心 | 91370100MA7D8TRE00 | 济南高新区新佰视眼视光中心 | 2023年8月30日 | R | -4.5D-0.75D×80 L:-4.5D-1D×165 PD:58mm | 合格

11 | 配装眼镜 | 生产领域 | 济南市章丘圣井鑫亮眼镜店 | 92370181MA3NGU0P7U | 济南市章丘圣井鑫亮眼镜店 | 2023年8月4日 | R | -4.5D-0.75D×150 L:-4D-1.25D×105 PD:60mm | 合格

12 | 配装眼镜 | 生产领域 | 济南华创眼镜有限公司 | 91370105MA7E2C2760 | 济南华创眼镜有限公司 | 2023年8月31日 | R | -4.25D-1.25D×170 L:-4.5D-0.75D×75 PD:61mm | 合格

13 | 配装眼镜 | 生产领域 | 章丘市高官寨魏兵百亮眼镜店 | 92370181MA3LGKC18D | 章丘市高官寨魏兵百亮眼镜店 | 2023年8月10日 | R | -4.5D-1.25D×80 L:-4.25D-0.75D×45 PD:62mm | 合格

14 | 配装眼镜 | 生产领域 | 章丘市双山百亮眼镜店 | 91370181MA3C7Y9P65 | 章丘市双山百亮眼镜店 | 2023年8月4日 | R | -4.25D-1.25D×110 L:-4.5D-0.5D×75 PD:61mm | 合格

15 | 配装眼镜 | 生产领域 | 章丘姜玉坤眼镜有限公司埠村分公司 | 91370181MA3N7FG47R | 章丘姜玉坤眼镜有限公司埠村分公司 | 2023年8月16日 | R | -4D-0.75D×150 L:-4.5D-1D×165 PD:58mm | 合格

16 | 配装眼镜 | 生产领域 | 章丘姜玉坤眼镜有限公司唐人中心分公司 | 91370181MA3FALNX4M | 章丘姜玉坤眼镜有限公司唐人中心分公司 | 2023年8月16日 | R | -4.25D-1.25D×170 L:-4.25D-0.5D×135 PD:59mm | 合格

17 | 配装眼镜 | 生产领域 | 章丘区视亮眼镜店 | 92370181MA3U397564 | 章丘区视亮眼镜店 | 2023年8月15日 | R | -4.25D-0.75D×50 L:-4D-1.25D×15 PD:63mm | 合格

18 | 配装眼镜 | 生产领域 | 商河县明亮眼镜店 | 92370126MA3LFRF37C | 商河县明亮眼镜店 | 2023年8月9日 | R | -4.25D-1.25D×110 L:-4D-1D×15 PD:63mm | 合格

19 | 配装眼镜 | 生产领域 | 章丘姜玉坤眼镜有限公司 | 913701817544778761 | 章丘姜玉坤眼镜有限公司 | 2023年8月16日 | R | -4.25D-0.5D×110 L:-4D-1.25D×15 PD:63mm | 合格

20 | 配装眼镜 | 生产领域 | 济南市百亮眼镜有限公司 | 91370181MA3RUBAF7Q | 济南市百亮眼镜有限公司 | 2023年8月4日 | R | -4.5D-1.25D×20 L:-4.5D-0.5D×165 PD:58mm | 合格

21 | 配装眼镜 | 生产领域 | 商河县视康眼镜店 | 92370126MA3PNAT29H | 商河县视康眼镜店 | 2023年8月3日 | R | -4D-1.25D×150 L:-4D-1D×105 PD:60mm | 合格

22 | 配装眼镜 | 生产领域 | 济南济阳区孟霞眼镜店 | 91370125MA3P9KUW1A | 济南济阳区孟霞眼镜店 | 2023年8月24日 | R | -4D-1.25D×80 L:-4.25D-1.25D×45 PD:62mm | 合格

23 | 配装眼镜 | 生产领域 | 济南市天桥区吴飞眼镜经营部 | 92370105MA3DN1UP8H | 济南市天桥区吴飞眼镜经营部 | 2023年8月31日 | R | -4D-1.25D×80 L:-4.5D-1.25D×165 PD:58mm | 合格

24 | 配装眼镜 | 生产领域 | 济南明朗眼镜有限公司 | 91370105MA3DGCKH09 | 济南明朗眼镜有限公司 | 2023年8月30日 | R | -4.25D-0.75D×170 L:-4D-0.75D×15 PD:63mm | 合格

25 | 配装眼镜 | 生产领域 | 银座集团股份有限公司 | 913700002671701644 | 银座集团股份有限公司 | 2023年8月21日 | R | -4D-0.75D×20 L:-4.5D-1.25D×165 PD:58mm | 合格

26 | 配装眼镜 | 生产领域 | 济南市百亮眼镜有限公司汇泉路分公司 | 91370181MA94RAX1XJ | 济南市百亮眼镜有限公司汇泉路分公司 | 2023年8月4日 | R | -4.25D-0.75D×50 L:-4.5D-1D×75 PD:61mm | 合格

27 | 配装眼镜 | 生产领域 | 济南泉茂宝岛眼镜有限公司济南印象城分公司 | 91370112MA3PPJPR31 | 济南泉茂宝岛眼镜有限公司济南印象城分公司 | 2023年8月29日 | R | -4D-1.25D×150 L:-4.25D-0.5D×45 PD:62mm | 合格

28 | 配装眼镜 | 生产领域 | 济南市天桥区谢氏眼镜商行 | 92370105MA3RQDF34H | 济南市天桥区谢氏眼镜商行 | 2023年8月31日 | R | -4.5D-1.25D×150 L:-4.5D-1.25D×165 PD:58mm | 合格

29 | 配装眼镜 | 生产领域 | 济南市天桥区振新眼镜商行 | 92370105MA3LEF9307 | 济南市天桥区振新眼镜商行 | 2023年8月31日 | R | -4D-0.75D×80 L:-4D-0.75D×105 PD:60mm | 合格

30 | 配装眼镜 | 生产领域 | 济南天桥区茂之昌眼镜行 | 91370105MA949YK57C | 济南天桥区茂之昌眼镜行 | 2023年8月31日 | R | -4D-1.25D×150 L:-4.25D-1D×45 PD:62mm | 合格

31 | 配装眼镜 | 生产领域 | 商河县新视力眼镜店 | 92370126MA3L8XBA7K | 商河县新视力眼镜店 | 2023年8月7日 | R | -4.5D-0.75D×150 L:-4.25D-1.25D×45 PD:62mm | 合格

32 | 配装眼镜 | 生产领域 | 天桥区兆旭眼镜店 | 92370105MA3LC37D6J | 天桥区兆旭眼镜店 | 2023年8月30日 | R | -4.25D-0.75D×50 L:-4D-0.75D×15 PD:63mm | 合格

33 | 配装眼镜 | 生产领域 | 济阳区旭之光眼镜店 | 92370125MA3U3L062D | 济阳区旭之光眼镜店 | 2023年8月4日 | R | -4D-0.5D×80 L:-4.5D-0.75D×165 PD:58mm | 合格

34 | 配装眼镜 | 生产领域 | 商河县雪亮眼镜行 | 92370126MA3LFCDP3B | 商河县雪亮眼镜行 | 2023年8月3日 | R | -4.25D-0.5D×170 L:-4.5D-0.75D×75 PD:61mm | 合格

35 | 配装眼镜 | 生产领域 | 济南文茂诚信眼镜有限责任公司 | 91370105MA3RE782XG | 济南文茂诚信眼镜有限责任公司 | 2023年8月30日 | R | -4.5D-0.5D×20 L:-4.25D-1D×45 PD:62mm | 合格

36 | 配装眼镜 | 生产领域 | 济南先锋光学眼镜有限公司 | 91370125307259914U | 济南先锋光学眼镜有限公司 | 2023年8月4日 | R | -4.25D-0.75D×50 L:-4.25D-1.25D×135 PD:59mm | 合格

37 | 配装眼镜 | 生产领域 | 济阳区崔寨镇硕明眼镜店 | 92370125MA3RG0K36H | 济阳区崔寨镇硕明眼镜店 | 2023年8月7日 | R | -4.25D-0.75D×50 L:-4.5D-0.5D×75 PD:61mm | 合格

38 | 配装眼镜 | 生产领域 | 济南利鹏眼镜经营店 | 91370105MA94YY2WXA | 济南利鹏眼镜经营店 | 2023年8月31日 | R | -4.5D-1D×80 L:-4D-0.75D×105 PD:60mm | 合格

39 | 配装眼镜 | 生产领域 | 济南茂昌眼镜有限公司解放东路分公司 | 91370102069045119G | 济南茂昌眼镜有限公司解放东路分公司 | 2023年8月21日 | R | -4.5D-1D×80 L:-4D-0.75D×105 PD:60mm | 合格

聚焦济南两大眼镜中心与灯具质量大曝光——深度解读背后的故事

济南槐荫镜伟眼镜销售中心、济南市天桥区林穆眼镜商行等商家,其营业地点未能成功联系到负责人。现场核查后确认,这两家眼镜中心已无法联系到商家本人,店面情况属实。这引发了人们对这些商家是否出现问题的疑虑。

而在灯具行业,一场关乎质量的风暴正在悄然掀起。近日,深圳市市场监督管理局发布通报,揭示了关于灯及灯具产品质量监督抽查的结果。此次共抽查了四十家企业的七十四批次产品,然而令人痛心的是,发现不合格样品高达二十九批次,不合格产品的发现率达到了惊人的百分之三十九点二。

通报指出,此次抽查是在深圳市市场监管局的严格监管下进行的。抽查的标准严格依照《灯具第1部分:一般要求与试验》等法规执行。从领域分布来看,生产领域未发现不合格产品,但在流通领域的实体店和互联网购物平台中,不合格产品的发现率却居高不下。尤其是互联网购物平台的产品,不合格率高达百分之六十。不合格的项目涵盖了耐热、标记等多个重要方面。

对于这样的结果,深圳市市场监督管理局已经依法对不合格产品的生产企业和经营单位进行了处理。提醒生产者必须严格遵守法律法规和国家标准的生产要求,一旦发现产品存在安全隐患或缺陷,应立即启动调查并主动召回产品。销售者则需严格把关进货渠道,确保产品质量,不得销售不合格产品。对于消费者来说,选购灯及灯具产品时也需要格外注意,尽量选择知名品牌、注意产品标识、CCC安全认证标志等。使用过程也要注意观察灯管的工作状态,确保安全可靠。

在2019年深圳市对灯及灯具产品进行的质量监督抽查中,一些产品和企业被发现存在不合格项目。以下是受检单位名称、样品名称、标称商标、型号规格等级、生产日期、生产单位名称、报告结论以及不合格项目的详细列表。

1. 深圳市龙岗区普宜捷灯饰经销部销售的LED投光灯,由中山市一声喊照明灯具有限公司监制,被发现存在多项不合格项目,包括防尘、防固体异物与防水、标记、结构、爬电与电气间隙、接地、外部接线与内部接线、绝缘电阻与电气强度、谐波电流等。

2. 深圳市坪山新区伟发五金交电商行销售的LED平板灯,由九江市精彩无限光电科技有限公司生产,存在标记、结构、外部接线和内部接线、防触电保护、绝缘电阻和电气强度、爬电距离与电气间隙、耐热、耐火和耐起痕等不合格项目。

3. 深圳市南山区乐安居市场新顶鑫灯饰店销售的嵌入式通用灯具,由广东三志照明有限公司生产,同样存在标记、结构、爬电距离和电气间隙、外部接线和内部接线、防触电保护、绝缘电阻和电气强度等不合格项目。

除了以上列举的,还有其他多家企业销售的产品也被发现存在不合格项目。不合格项目涵盖了标记、结构、爬电距离和电气间隙、外部接线和内部接线、防触电保护、绝缘电阻和电气强度、耐热、耐火和耐起痕等多个方面。

也有一部分企业及其产品在抽查中未发现不合格项目。这些企业和产品包括茂硕电源科技股份有限公司的LED控制装置、深圳市健森科技有限公司的LED控制装置、深圳市精日昌电子科技有限公司的LED控制装置、深圳市光大照明科技有限公司灯具制造厂的固定式灯具、深圳市洲明科技股份有限公司的LED路灯、深圳市缔轩科技有限公司的可移式灯具、深圳市航嘉驰源电气股份有限公司的LED控制装置、深圳市好时达电器有限公司的可移式LED台灯、深圳市卓明光电有限公司的LED投光灯、深圳市火牛科技有限公司的LED控制装置、深圳市顺电连锁股份有限公司中心城分店的LED球泡、深圳百安居装饰建材有限公司泰然店的LED吸顶灯、深圳市福田区乐安居新洲市场鑫富迪灯饰商行的固定式灯具、深圳市福田区乐安居新洲市场华艺灯饰店的吸顶灯、深圳市顺电连锁股份有限公司的面光源阅读台灯、深圳市顺电连锁股份有限公司的台夹两用充电灯、深圳市福田区乐安居新洲市场鑫富迪灯饰商行的固定式灯具、深圳市福田区乐安居新洲市场华艺灯饰店的飞利浦LED吸顶灯、深圳市健之家实业发展有限公司的孩视宝舒目台灯、深圳市罗湖天和灯饰商店的嵌入式天花射灯和筒灯、深圳宜家家居有限公司的固定式LED灯具、小夜灯和LED小夜灯、深圳市龙井华城百货有限公司的自镇流荧光灯、深圳市南山区丽达五金店的T4电子节能灯、深圳市南山区鑫富达灯饰商行的LED球泡灯、深圳市龙井华城百货有限公司的LED球泡、深圳市同健光电有限公司的落地灯、深圳市新视界照明科技有限公司的视觉作业台灯、深圳市鑫坪洲百货商场的公牛爱眼LED灯、深圳市康视佳网络科技发展有限公司的可移动式LED灯具以及深圳市龙华区龙华金鸿五金店的公牛爱眼LED灯等。

对于上述发现的不合格产品,相关部门已进行了处理和监督,并提醒消费者在购买时注意产品的质量和安全标准。对于未发现不合格项目的产品,消费者可以放心购买使用。

如果您对这些产品有任何疑问或需要进一步的维修服务,请拨打24小时维修服务专线:。

Copyright © 2016-2025 www.caominkang.com 曹敏电脑维修网 版权所有 Power by